{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "dried-original",
   "metadata": {},
   "source": [
    "# Solving Eigen Problems Numerically"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "determined-basis",
   "metadata": {},
   "source": [
    "Do the equal partrition $\\{x_i\\}_0^N$ on interval $[L,R]$, with $\\Delta x = \\frac{R-L}N$.(doing discretization)  \n",
    "Denote $\\psi_i = \\psi(x_i)$, and introduce the zero boundary condition:\n",
    "$$\n",
    "\\psi_0 = \\psi_N = 0\n",
    "$$\n",
    "We have the discretized form of $\\frac{d^2}{dx^2}$, which is tridiagonal matrix:\n",
    "$$\n",
    "\\frac{d^2}{dx^2} = \\frac1{\\Delta x^2}\n",
    "\\begin{bmatrix}\n",
    "-2 & 1 & \\\\\n",
    "1 & \\ddots & \\ddots\\\\\n",
    "& \\ddots & \\\\\n",
    "&& & & 1 \\\\\n",
    "&&&1&-2\n",
    "\\end{bmatrix}\n",
    "\\implies\n",
    "H = -\\frac{d^2}{dx^2} + V(x)\n",
    "$$\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "bacterial-delivery",
   "metadata": {},
   "source": [
    "$$\n",
    "V(x) = x^2 -5 \\cos x +5x\n",
    "$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "emotional-evening",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import numpy.linalg as LA\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "found-glenn",
   "metadata": {},
   "outputs": [],
   "source": [
    "class EigenSolver():\n",
    "    def __init__(self,V,L = -7,R = 2,NUM = 100):\n",
    "        x = np.linspace(L,R,NUM+1)\n",
    "        xdelta = (R-L) / NUM\n",
    "        H = np.diag(2*np.ones_like(x)/xdelta**2 + V(x)) - np.diag(np.ones(len(x)-1)/xdelta**2,-1)\n",
    "        self.res = LA.eigh(H) # using L part \n",
    "        self.V,self.x = V,x\n",
    "    def plot(self,NUM = 5):\n",
    "        \"\"\"NUM - the number of eigenstates ploting\"\"\"\n",
    "        alpha = 3 # for visualization of wavefunc, no specific meaning\n",
    "        x = self.x\n",
    "        fig,ax = plt.subplots()\n",
    "        ax.plot(x,self.V(x))\n",
    "        energy = self.res[0][:NUM]\n",
    "        state = self.res[1][:,:NUM]*alpha+energy\n",
    "        ax.plot(x,np.ones((len(x),len(energy)))*energy,'--') # ploting energy\n",
    "        ax.plot(x,state)\n",
    "        "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "mature-medication",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXIAAAD4CAYAAADxeG0DAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAABLZUlEQVR4nO3dd3gjx334//fsLjrB3nnk8Xovkk6nU++WZKu5W3Zs2c7PctxbnLik2ClfJ66xE6fILbZjW71bXVbvvN77sfeGjsXuzu+PxVHkkSddIQ8Eb17Psw9ADLD7Abj47GB2ZlZIKVEURVHyl5brABRFUZSToxK5oihKnlOJXFEUJc+pRK4oipLnVCJXFEXJc0YuNlpeXi4bGxtzsWlFUZS8tX79+j4pZcWRjx9zIhdC+IHnAF/2dXdJKf9eCFEK3A40AoeA90kpB99sXY2NjTQ1NR179IqiKApCiOaJHj+eppU0cJmUchWwGrhaCLEO+BrwlJRyAfBU9m9FURTlFDnmRC5dseyfnuwigRuAX2cf/zVw42QGqCiKory54zrZKYTQhRCbgB7gCSnlq0CVlLITIHtbeZTX3iKEaBJCNPX29p5k2IqiKMphx5XIpZS2lHI1MAtYK4RYfhyvvVVKuUZKuaaiYlxbvaIoinKCTqj7oZRyCHgGuBroFkLUAGRveyYrOEVRFOWtHXMiF0JUCCGKs/cDwBXALuAB4Obs024G7p/kGBVFUZQ3cTz9yGuAXwshdNwDwB1SyoeEEC8Ddwgh/hxoAd47BXEqiqIoR3HMiVxKuQU4Y4LH+4HLJzMoRVGUmSZp2nz3sV187Lw5NJQFJ3Xdaoi+oijKKXD/pnZ+9eIhuiKpSV+3SuSKoihTTErJr19uZklNIWc3lkz6+lUiVxRFmWJNzYPs7Ixw87mzEUJM+vpVIlcURZli//vSIQr9BjesrpuS9atEriiKMoW6hlM8tq2L959dT8CrT8k2VCJXFEWZQr9/rQVbSv5s3ewp24ZK5IqiKFPEtBx+/2oLly6qZHZZaMq2oxK5oijKFHl0exd9sTQfPnfqauOgErmiKMqU+b+Xm5ldFuTiBVM7UaBK5IqiKFNgd1eU1w4N8MG1DWja5Hc5HE0lckVRlCnwu1eb8Roa711TP+XbUolcURRlksXTFvdsaOfaFTWUhrxTvj2VyBVFUSbZfZvaiaUtPjSFXQ5HU4lcURRlEkkp+W12XpUzG4pPyTZVIlcURZlEG1oG2dUV5cPrpmZelYmoRK4oijKJfvdqCwU+gxtW156ybapEriiKMkmGExn+uKWTG1bXEvIdzwXYTo5K5IqiKJPk7g1tpC2HD57TcEq3qxK5oijKJJBS8vvXWlhVX8yy2qJTuu1jTuRCiHohxNNCiJ1CiO1CiC9kH/+WEKJdCLEpu7x96sJVFEWZnpqaB9nXE+ODa6d+ANCRjqcRxwK+IqXcIIQIA+uFEE9ky34kpfz+5IenKIqSH37/agthn8F1q07dSc7DjjmRSyk7gc7s/agQYicwNZe7UBRFySODcZM/bu3k/WvqCXpP3UnOw06ojVwI0QicAbyafeizQogtQohfCiEmvLKoEOIWIUSTEKKpt7f3hIKNpy22tA2d0GsVRVGmyj0b2zFzcJLzsONO5EKIAuBu4ItSygjwX8A8YDVujf0HE71OSnmrlHKNlHJNRcWJTen4t/dt4+ZfvoZlOyf0ekVRlMkmpeS27EnOJTWFOYnhuBK5EMKDm8R/J6W8B0BK2S2ltKWUDvAzYO3kh+m6YmkVg4kMrx8anKpNKIqiHJcNLUPs7Ylx09mn/iTnYcfTa0UAvwB2Sil/OOrxmlFPeyewbfLCG+vihRV4DY3HtndN1SYURVGOy22vtRDy6jk5yXnY8dTIzwc+DFx2RFfD7wohtgohtgCXAl+aikABQj6DixaU88SObqSUU7UZRVGUYxJNZXhoSyfXn+KRnEc6nl4rLwATzQDz8OSF89betqyaJ3f2sL0jwvK6U9vpXlEUZbQHNneQzNi8/+zcnOQ8LO9Gdl6xpApNoJpXFEXJudtea2VxdZhVs3Jbqcy7RF4a8rJ2TqlK5Iqi5NT2jmG2tg9z09qGUzZd7dHkXSIHuGpZNXu6Yxzsi+c6FEVRTlO3v96K19C4cXXux0XmZSK/cmkVoJpXFEXJjVTG5r6N7VyzvJqioCfX4eRnIp9VEmR5XaFK5Iqi5MRj27uIpCzevyZ3fcdHy8tEDnD1smo2tgzRHUnlOhRFUU4zdzS1Ul8aYN3cslyHAuRxIr9qWTUAj6tauaIop1DrQIIX9/Xz3rPq0bTcnuQ8LG8T+fzKAuZWhHhse3euQ1EU5TRyZ1MrQsB7zpqV61BG5G0iF0Jw9bJqXj7Qz1DCzHU4iqKcBmxHcuf6Ni5cUEFtcSDX4YzI20QOcPXyamxH8uTOnlyHoijKaeD5vb10DqemzUnOw/I6ka+oK6K2yM+j21Q7uaIoU+/O9W2UBD1csbQy16GMkdeJXAjBVcureW5vL/G0letwFEWZwYYSJk9s7+aG1XX4DD3X4YyR14kc3G6IpuXwzO4Tu+qQoijKsbh/Uwem7fDeNdPnJOdheZ/I1zSWUhby8qjqhqgoyhS6c30ry2oLWVY7/WZdzftErmuCty2r4uldPaQydq7DURRlBtrREWFbe4T3TqMuh6PlfSIHd3BQLG3x4r6+XIeiKMoMdOf6Vry6xg3TYIKsicyIRH7evHLCfoNHVO8VRVEmmWk53L+pgyuXVlES8uY6nAnNiETuNTSuXFLFEzu6ydhOrsNRFGUG+dOubgbiJu+Zhic5D5sRiRzgmhU1DCczvLy/P9ehKIoyg9y1vo3KsI+LFlTkOpSjOuZELoSoF0I8LYTYKYTYLoT4QvbxUiHEE0KIvdnbkqkL9+guXFBOyKur5hVFUSZNbzTN07t7edeZs9CnyQRZEzmeGrkFfEVKuQRYB3xGCLEU+BrwlJRyAfBU9u9Tzu/RuXRxJY9v78J2ZC5CUBRlhrlvYzu2I6fVBFkTOeZELqXslFJuyN6PAjuBOuAG4NfZp/0auHGSYzxm1yyvoT9u8trBgVyFoCjKDCGl5K71bZzRUMz8yoJch/OmTqiNXAjRCJwBvApUSSk7wU32wISTEAghbhFCNAkhmnp7p2YU5iWLKvB7NB7d1jkl61cU5fSxrT3C7u7otK+NwwkkciFEAXA38EUpZeRYXyelvFVKuUZKuaaiYmpOGoR8BhcvrOCRbV04qnlFUZSTcNd69+LK166szXUob+m4ErkQwoObxH8npbwn+3C3EKImW14D5HRO2bevqKEnmmZDy2Auw1AUJY+lLZv7N3dw1bJqigK5v7jyWzmeXisC+AWwU0r5w1FFDwA3Z+/fDNw/eeEdv8sWV+I1NP64VTWvKIpyYv60s4ehRCYvmlXg+Grk5wMfBi4TQmzKLm8H/gW4UgixF7gy+3fOhP0eLlpQwSNbVfOKoign5q71bVQV+rhgfnmuQzkmxrE+UUr5AnC0jpSXT044k+MdK6t5cmc3G1sHOWt2aa7DURQlj/RG0zyzp5dPXDh3WvcdH23GjOwc7fIlVXh1jT9uUYODFEU5PvdvOtx3fHpOkDWRGZnIC/0eLlpYwSPbOlXziqIox+Wu9W2sqi9mfmU416EcsxmZyMFtXukcTrGxdSjXoSiKkie2dwyzqyvKe87Mn9o4zOBEfrh55WHVe0VRlGN01/o2vLrGdaumf9/x0WZsInebV8p5ZKtqXlEU5a1lbIcHNnVwxdJKioPTc97xo5mxiRzcwUEdwyk2tqrBQYqivLlndvfSHzd595n50Xd8tBmdyK9cWoXX0Hhws2peURTlzd29vo3yAi8XLZy+844fzYxO5GG/h0sWVvDw1k41ta2iKEc1GDd5alc3N6yuw6PnX1rMv4iP07WraumJpnn9kJraVlGUiT24pYOMLfOyWQVOg0R++eJK/B6Nh7Z05DoURVGmqbs3tLO4OszS2sJch3JCZnwiD/kMLl9SxSNbu7DUhZkVRTnCvp4Ym1uH8maCrInM+EQOcN1K98pBrxxQzSuKoox194Y2dE1ww+r8GgQ02mmRyC9ZVEnIq6vmFUVRxrAdyb0b2rl4YQUVYV+uwzlhp0Ui93t0rlxaxSPbujAt1byiKIrrpf19dEVSeXuS87DTIpEDXLeqluFkhhf2Tc31QhVFyT/3bGin0G9w+ZIJLzWcN06bRH7hggqKgx7u36SaVxRFgVja4tFtXVy7qha/R891OCfltEnkXkPj7StqeHx7NwnTynU4iqLk2MNbO0lm7LxvVoHTKJED3LCqlmTG5okd3bkORVGUHLt7fRtzykOc2VCc61BO2vFcfPmXQogeIcS2UY99SwjRfsQ1PKetsxtLqSny84BqXlGU01rrQIJXDw7w7jPrcK8rn9+Op0b+v8DVEzz+Iynl6uzy8OSENTU0TXDdqlqe3dPLYNzMdTiKouTIvRvbAbjxjPztOz7aMSdyKeVzQN6PqLl+VS2WI3l4m5oRUVFOR1JK7tnQxrlzy5hVEsx1OJNiMtrIPyuE2JJteik52pOEELcIIZqEEE29vbnrAristpB5FSHVvKIop6n1zYMc6k/w7jwekn+kk03k/wXMA1YDncAPjvZEKeWtUso1Uso1FRW5m+9XCHco7qsHB+gYSuYsDkVRcuPuDW0EvTrXLK/OdSiT5qQSuZSyW0ppSykd4GfA2skJa2rdsNq9Ht99m9pzHImiKKdSKmPz0OZOrl5eTchn5DqcSXNSiVwIUTPqz3cC24723OlkdlmIs2aXcO+GdqRUF5xQlNPF4zu6iaYt3jMD+o6PdjzdD/8AvAwsEkK0CSH+HPiuEGKrEGILcCnwpSmKc9K984w69vbE2N4RyXUoiqKcInevb6OuOMC6uWW5DmVSHfNvCynlTRM8/ItJjOWUunZlDf/w4A7u2dDO8rqiXIejKMoU646keH5vL5++ZD6alv99x0c7rUZ2jlYc9HLp4goe2NyhLjihKKeB+za240h415kzo+/4aKdtIgd45xmz6IuleX5fX65DURRlCkkpuXtDG2c0FDO3oiDX4Uy60zqRX7q4gqKAh3s3qN4rijKTbWuPsKc7NiMmyJrIaZ3IfYbOdatqeHxHF9FUJtfhKIoyRe7e0IbX0LhuZW2uQ5kSp3UiB3jXmbNIZRwe2dqV61AURZkCpuVw/6Z2rlxSRVHQk+twpsRpn8jPqC9mbkWIO9e35joURVGmwJ929TCYyPCeNTOzWQVUIkcIwXvOmsXrhwY52BfPdTiKokyyu9a3URH2ceH88lyHMmVO+0QO8O4zZ6EJuEvVyhVlRumLpXlmdw/vOqMOQ5+56W7mvrPjUFXo56KFFdyzoR3bUUP2FWWmuH9TB5YjZ9RMhxNRiTzrvWfV0zmc4kXVp1xRZoy71rexclYRC6vCuQ5lSqlEnnXF0kqKgx7uXN+W61AURZkE2zuG2dkZ4T0zvDYOKpGP8Bk6N6yq5bHtXQwnVJ9yRcl3d69vx6OLGdt3fDSVyEd575p6t8/pZjXSU1HymWk53LepnSuWVFES8uY6nCmnEvkoy+uKWF5XyO9fbVHzlCtKHvvTrh4G4ibvncF9x0dTifwIHzi7gV1dUTa3Dec6FEVRTtBd61upDPu4aEHuLit5KqlEfoQbVtcS8Ojc9lpLrkNRFOUE9EbTPL27l3eeObP7jo92erzL4xD2e7huVQ0PbO4glrZyHY6iKMfpvo3ueJD3nlWf61BOGZXIJ3DT2gYSps0DmzpyHYqiKMdBSsmd61s5o6GY+ZUzb97xo1GJfAKr64tZXB3mD6p5RVHyytb2YfZ0x06r2jgc38WXfymE6BFCbBv1WKkQ4gkhxN7sbcnUhHlqCSG4aW0DW9uH2dauTnoqSr64s6kNv0fj2lU1uQ7llDqeGvn/Alcf8djXgKeklAuAp7J/zwg3nlGH36Pxf6805zoURVGOQSpjc/+mdq5eVk2hf2bOO340x5zIpZTPAQNHPHwD8Ovs/V8DN05OWLlXFPBw4+o67tvUrkZ6KkoeeGx7F5GUxfvWnF7NKnDybeRVUspOgOxt5dGeKIS4RQjRJIRo6u3tPcnNnhofPnc2qYzDXRvU/CuKMt3d0dRKfWmAdXPLch3KKXfKTnZKKW+VUq6RUq6pqMiPTvrLaos4a3YJ//dKM46a3lZRpq3WgQQv7uvnvWfVo2ki1+GcciebyLuFEDUA2duekw9pevnwutkc7IvzgpreVlGmrTvXtyEEp8VMhxM52UT+AHBz9v7NwP0nub5p55oV1ZSFvPzmZXXSU1GmI9uR3NXUyoULKqgtDuQ6nJw4nu6HfwBeBhYJIdqEEH8O/AtwpRBiL3Bl9u8ZxWfovP/sev60q5u2wUSuw1EU5Qgv7uujYzjF+0/Dk5yHHU+vlZuklDVSSo+UcpaU8hdSyn4p5eVSygXZ2yN7tcwIH1o3GyEEv1W1ckWZdm5vaqUk6OGKpUftazHjqZGdx6CuOMDVy6r5/WstxNX8K4oybQzETZ7Y3s0Nq+vwGXquw8kZlciP0ccvmEM0ZXGXuhScokwb92xow7QdblrbkOtQckol8mN01uwSVtcX86sXD6quiIoyDUgp+cNrLZzRUMyi6pl9ceW3ohL5cfjzC+ZwqD/BU7tmXC9LRck765sH2d8b56azT+/aOKhEflyuWV5NbZGfX7xwINehKMpp7w+vtRLy6rxj5ek1QdZEVCI/DoaucfN5jbxyYEDNiqgoOTSczPDHrR1cv7qOkM/IdTg5pxL5cfrA2gZCXp1bn1O1ckXJlQc2d5DKONy09vTtOz6aSuTHqSjg4UPrZvPQlg5a+tUAIUU51aSU3PZaC0trCllRV5TrcKYFlchPwJ9fMAdD07j1+f25DkVRTjtb2obZ3hHhprX1CHH6TZA1EZXIT0BVoZ93n1XHHU1t9ERTuQ5HUU4rv3u1maBX58Yz6nIdyrShEvkJuuWieVi2w69ePJTrUBTltDGczPDg5k6uX1VL+DS7CtCbUYn8BM0pD3HNihr+7+VmIil1BSFFORXu29hOMmPzoXNm5zqUaUUl8pPwqYvnEU1b/OalQ7kORVFmPCklv3+1hRV1RayYpU5yjqYS+UlYXlfE5Ysr+dnzB4mqWrmiTKkNLYPs7o7yoXPUSM4jqUR+kr54xUKGkxnVVq4oU+x3r7RQ4DO4blVtrkOZdlQiP0krZhVxxZIqfv78AYaTqlauKFNhIG7y0NZObjyjVo3knIBK5JPgi1csIJKy+NWLB3MdiqLMSHc0tWJaDh85tzHXoUxLKpFPguV1RbxtaRW/eOGgqpUryiSzHcn/vdLMOXNKWVh1ek9XezSTksiFEIeEEFuFEJuEEE2Tsc5888UrFhJNWfxMzcGiKJPq2T09tA0mVW38TUxmjfxSKeVqKeWaSVxn3lhaW8h1q2r5+QsH6I6o0Z6KMll+83IzlWEfb1tWletQpi3VtDKJvvq2RdiO5EdP7Ml1KIoyIzT3x3l2Ty83rW3Ao6t0dTST9clI4HEhxHohxC2TtM6801AW5MPrGrmjqZW93dFch6Moee//XmlGF4IPqr7jb2qyEvn5UsozgWuAzwghLjryCUKIW4QQTUKIpt7e3kna7PTzucvmE/IZ/Ouju3IdiqLktaRpc0dTG1ctq6aq0J/rcKa1SUnkUsqO7G0PcC+wdoLn3CqlXCOlXFNRUTEZm52WSkJePn3JfJ7c2cMrB/pzHY6i5K17NrYxnMxw83mNuQ5l2jvpRC6ECAkhwofvA28Dtp3sevPZx85vpLbIz7cf3IHtyFyHoyh5R0rJ/754iOV1hZzdWJLrcKa9yaiRVwEvCCE2A68Bf5RSPjoJ681bfo/O31y7lJ2dEX7/anOuw1GUvPPCvj729sT42Hlz1MUjjsFJj3WVUh4AVk1CLDPKNcurOX9+Gd97bDdvX1FDWYEv1yEpSt741YuHKC/wce2qmlyHkhdUf54pIoTg29cvI2HafO+x3bkOR1HyxsG+OH/a1cOHzmnAZ+i5DicvqEQ+heZXhvn4BXO4vamVTa1DuQ5HUfLCr186hEcXfGid6nJ4rFQin2Kfv3wBlWEfX79nKxnbyXU4ijKtRVIZ7mxq5bqVtVSGVZfDY6US+RQr8Bn8040r2NkZ4b+f2Z/rcBRlWvv9qy3ETZuPXzAn16HkFZXIT4Erl1Zx3apafvKnvexRIz4VZUKm5fCrFw9y/vwyltepS7kdD5XIT5FvXbeUsN/DV+/cjKWaWBRlnAc3d9AdSXPLRfNyHUreUYn8FCkr8PHt65exuW2Yn7+gLkChKKNJKfnZ8wdYVBXmogXluQ4n76hEfgpdu7KGa5ZX84PHd7OlbSjX4SjKtPHc3j52dUX5xEVz1QCgE6AufncKCSH4zrtWsPnHQ3z+Dxt56PMXUjDq+oMZ26E/ZtIXS9MfNxmMm/THTYYTJpGURSSZIZa2SGZskqZN2nKwHYkj3WkADF1gaBo+Q6PAZxDyGRQGDMpCPsoLvJQX+KgtDlBbHKC8wKu+MCfIsh0GEiaD8QyDCZNkxsa0HEzLwaMLvIaGz9ApDnqoKPBREvLOmClYpZT0x036Yyb9sTSDiQypjLsvmpaNpgl0TWBogoDXoMCnU+DzUBL0UBz0Uhz0TPhZ/Oy5A1QV+rheXVj5hKhEPsVMy2EgbtIfT9OX3fkvW1LF/73SzDX/9hwNZUF6o2l6o+6XYiJCQNhnUBjwUOAzCHh1gl6dsN9A1wRaNiFbjiRjO6Qth65IinjaYjiZYSiZQR4x5YvP0JhdFqSxLMScihDzKwpYWBVmfmWBurgt7v/tQF+M/T1x9vfGONAbo20wSdtgku5oatzn+WaEgJpCP7PLQjSWh1hUVcCyuiIWV4cJ+z1T9yZOguNIDvbH2dkZYWdnhD3dMVr6E7QMJEhm7JNa9+EDXHmBj4qwD024Q/KvXVnDawcHqAi7FY/ioBddU5WNYyHk8eyRk2TNmjWyqSn3V4STUuJI95qAtiOxHLeGm7HdhJix3VpWOruksjXhwzXiWNoiYVpEUxaRlEU0lWE46S5DiQyDcZNo2ppw24YmsBxJY1mQxdWF2Z3XR3nYrTmXhbyUhryUhXyE/QbaSezQlu0wmMjQHUnROZyiYyhJ60CCQ/0JmvvjNPcnMEedgG0oDbK4OszimkKW1hSyrLaQWSWBGVuDH4ibbO8YZkdHhB2dEXZ1RtnfG8PKTngmBNQWBagvDTCrJEhtcYCKAi+lIR8lQQ9+r45X1/Aa2ph9Zihh0hsz6Y2maRtIcLA/zsG+OEOjDtjzKkKc2VDCGQ0lnDW7hAWVBSf1vz5Rw8kMG5oHWd88yKbWITa3Do3su7ommFMeorEsxOyyIPUlAcrDPspCPkpCHoIeA59Hw6NrSOl+lzKOJJG2iGWXoUSGoYQ5Upvvi7mVl55omrbBBBPNLacJKA25Cf1wjb4o4KHQ76EwYIz86gz5DEJenYBHx+/V8Rnur1KvruM1NAxd4NHc28O/FnRN5OX+LIRYP9FV2PIqkX/n4Z389rnxw911w4Pm8SClJJNKIhEcflcS0HQDNA0pwbIsJGSfMzn/SK8OhQEfQV0iI30EhUVAWITIEBIZVp69hvnzGpADXRx46n7CIoNH2uzqihBLW7zrU5/h/HNW0bxlE6/ce9u49V/5ic9SWjuL/etfpemhe8eVX/OZr1BYXsGul55j8xMPjyu/7ktfJ1hYxLZnnmT7s0+OK7/+q39HZ9zh8ceeZf2uQ3TJEF1OiD4ZGPmMwn6DWV6T0ngnNVqcGi1OlUgQ8Hl499e/DcDLd/+Blm2bx6w7UFDI9V/5BgDP//5/6dg7dp72cGk5b//cXwLw9P/eSk/z2GueltTU8bZbPgfA47f+O4Od7WPKK2fP5dKPutcyefjfv090oG9Mee2CxVz4wY8CcP/3/x/tUZNOGaLDCdHhFNCtlzCQeeOnfpFIUSviVGtxqkWCM5fN5dp3XU/Aq3P7t7827rNbtO5CVl/1DjLpFPf8y7fGlS+7+AqWX3IFicgwD/7oO0gJUby0Z7c/XDaPvTGdgbjpfl5kmK1FmK1Fma1FuP4dl7L8nHUMdLTxxM/+Y9z6173zA8xeuZqeQwd4+te3jiu/4AM3U7doCe27d/LCbb8GQEoYkH6anUIyC85hx4DN7q6o+11BUi3iNGhRZmlR3vXud3DW8nm0bW6akn1v5cf/kmt++iq3VPZQONxCVHqISi9xPMSkl6qzLmAwbtLS0kF/NEkSg6TUMSehMUEg0TQNXQikY4N0snu7u9cLoeHxeRGAZaaRjjPqtSA0HY/fhwDMVBLpjM0omq7j8buDmtKJBId/xt36/13A+fNP7ITu0RJ5Xv2GXl5XxCp97EUpBFBcVUtFQy2OY3Og6dUxZSCpqJ9NRcNsLDPNgaZXRlK4QKIBtfMXUN04FysZZ89Lz6Aj0XHQkRg4LD57LQ2LFpOJDLDlobswcPBh4xM2XmwueNf7R32ZnhoX9wWLL6NuUQ3tu4eIaKmR4BZUhdnWPsw/PLSD3y5dNEWf2lszdI25FUHWVUDJ/taRx02p0S2D1L79I+zoHOa17Yd4za4mY7vzXwgkFWaKp363ngWVYRgwEE6QcpHCI3LXxVJKGJZeemWQbX1+Hr5nK3u6o2zvX05KjopdJFkStrhk3SqW1Ray7/b/wmfFx6yrMTSHgHfy5vsQAgoxKdRNluiDrDpnBYvOvZDt+9r4zW/u5KBTSLNTxC6rDICf39vP/JeeZX6xB5Gpo0pLUCaSlIg0unjrSlg0bbO5dYj1+6M8l2mk3Smg3SkggdukE9oX4czZpZxXAcbuF6nXonhH/e8WVwandL6Tnz93gIBH5+IFpbRt2E0FyTHl73/npwB4/cFmDmzYMPK4LcHxBrn8M18lnrZ45dGHadu3HxMdCw1LCoQ/xLIr3oHlOOx+7VUGe3twECOLJxBi7ppzsB1o3rqJeGTYreRJAIEvVED9cnc+wJZtm0nFY9mtu5klEC6kbok7cKl5y0bM1Nhr9QaLS6hd4JYf3LQeO+MerCvDkz+BXl7VyGeiHR0R3v1fL7G4Jsxtt6yb9pME2Y6kuT/Orq4ouzoj7OiMsrcnSstAYqTdeHRTRH1JkPrSINVFfqoK/VSG3Waj4qAXr3H8JwCllERSlttsEU3TFUnRHUnTMZSkZSBB64Dbjpsw32jHLQ56WFgVZlFVmCU1hSytLWRRVXhSE/RkG0qYbGwdYmPzINs6ImzvGKY7kh4p1zVBeYHb1FAc8OLzuL84HSlJmDYDcZOBuElsVNOeRxcsrAqzoq6IFbOKsk054Zy1Q7cOJLjk+8/w0fMa+dtrl+YkhnwzI5pWZqpHtnbyqd9t4MbVtfzwfatz0kZ6spKm7Z4U7ItzsDfOwb4YrYNJ2gYTYxLQaCGvToHfIOg1CHjc9kw9234ppcRyJJYtSVs28bQ9cj7CmqBBNeDRqS8N0FDqHjjmVRQwN3sStyLsy8v20CP1xdIc6I3T3B+nZSBBTyTNcNLtOWPaDpoQCCDg1SnNnmOpKvQztzzE3IoQ9aVTW7s+Xt+8dyt3NLXy/F9dRnWRmlflWMyIppWZ6poVNXz1qkV877HdFAe9/P11S/Mu8QS8OsvriiYcWp3K2PRG03Rna88DCZOhuMlgIkM8bZHI2CRNC9OW2I6DZUt0TcPvcU9M+T06Qa9ByOf21CkJeikJeikr8FJd5Ke60E9RwJN3n9nxKs/29Fg7pzTXoZy0ruEUdza18Z6zZqkkPglUIp8mPn3JPAbjJj9/4SCFAQ9fvnJhrkOaNH6PTn22ppwLUkpitsOwZROzbeKWQ8J2SDkOpnR7WIzm0wReTcOvCYoMnSKPQbGhU6BrM/5gcar85zP7cKTkUxfPz3UoM4JK5NOEEIJvvmMJkVSGnzy1l7DP4BMXzc11WNOWlJJhy6YznaEznaHLzNCbtug2M/SaFn2ZDH2mxUDGZsiysCehBTGgaVT5DKq9HuoDXhr9PuYEfSwI+pgf9BOYAYN+4rbNgUSa/Yk0h5JpukyLrrRJr2kRtRzitk3CdnAAiUQg8GkCv6YR0DX3wJddyr0G5R6DCq+HSq9Blc9DpddDKm5y22utvHfNLBrKcnNwn2lUIp9G3JGfK4mnbf754Z1E0xZfumLBaVkLTDsO7akMbSmTtrRJe8qkPZWhPW3SkcrQkc6QdMb3jCkydCqyCWRhyE+Zx6AkW6MuMnRChkZY1wnqGl5N4NM0PNm2ZQAHMB0H05EkHbcWP2zZDGZseswM3ekMXekMLwzGuDM9OLJdDWgM+FhWEGBlOMCKcIDV4SDFnun7FYtaNhsjCTZFE2yJJtgWS3IoaY55TomhZxOwQbXPQ0H2s9NwT2pLCWlHknIc9/PK2HSlM+yMJ+k3LZITnM/QJMgLKnit1MtHtx6g0usm+MOJv9zr/s9KPe7/zKvl/wFyqk3KyU4hxNXAjwEd+LmU8l/e7PknerJzdzzFnb/fMXbbEmoWFDNnZTmW5fDa/QfGva5haSmzl5aRTmZo+uMhkNl+oNll3qoK6heXkIpmaHroIBruziYAXcLS82poXFxKvC/J6/ccQJdgZBddwtlvb6R+SSm9rVFeuGPvuO2vu3EeNfOK6Nw/zCv3jZ+T/IL3LaCiPkzrzgGaHj6ERHKwN05PNE11kZ+PfO5MympCHNzSx6YnWsa9/oqPLSVc6mdvUzfbnm0fV371J5cTKPCy86VOdr3cOa782s+twuPV2fpMG/vW94wrf+dXzgRg4+MtHNo6tp+24dW47nOrAXj9jwdp2zU4ptxf4OGaT64A4OV799N1YBgAU8CAFxJlHsovqqE1ZbJhTz+dlkW/DyKesQcvAZTYUJSUlGSgxISSjKS+0M+lFzdQ5fOw7ba9mANjE1H13CLOfac7m94j/7OVVGzs6NlZi0s4+x1uF7EH/30Tljn24NC4opwz3uZeqebeH2wYU5YREDijFLmsmJ2RBE9v6aY1CP2+N2KfJXTWVRaywucj+VgHs5Lul+Sw5RfXsWBNFdGBFE/+auy+DbD6ygbmrCxnsCvOM78bP4ZizXHse398eD/7Q7CvQHCgADr8ILOVhDrdoKovQ11SUp2CqhRUpOFtH1xESfWJ7XsSuOj/W0rMK3htfRdbdvfTr0v2JdM4hR7sAgOqA/RmLPozEw+cA/eXUNCWeFIOfgd8Nu4tgvlLSvFrGoOHIiT70nikHPle+rw6Ky+owxCCgxt7ifYkRr7XmoRAyMOqy+oRAna+2EG0LzVyQBdAQbGPlZfMAmDL020khsaetC+qCLDswjoANj7eTDKWGdOPvKQ6xJLz3GuONj18CDPlvse/uHkl5d4TO8BP2clOIYQO/BS4EmgDXhdCPCClHL9XnqRftffxv/MnOjpHYEvEvbtggvLMEGweOnp5sh829rv3F09QPtQNr3S791eOL/d1teLva8crgaUCrwO+w4sNf+zvpcqOIqIWg5UQsCFkQdB2l27LImyPHmwgmFtRgKFrdAwl+aeHdvDPN59xtI9l2pFAUncTdSwk6WrvozVpsjmYpH2RYMA7OlHbsKcNjxCUeqDYhOXDUGo6lJowO+Tj2uvmU+Pz8OLv9zDUnRizrXKfwdriAgD2SMHYND61PBIahcGKymKuKQ6z8P4uAOK6pDUIh4LQX+/jucEod5mDsETD40gaEtAYh9kJSZFjMW8Keo6ZAtqCcCAyzO7tg7zaH6V7ubvv+m3JnDisHpRcd1Ytl8wrI7ovQtPrhyY1BgGEdI3ygJek5sUz5F6PszhqsrqhGK8uufaaBXi8OhufbmXzll6iHogaEDcgrkPDxbVELJuDzRF6UinSGqR16DMgo0PrQJSk7ZAwbDLVIMXo76fkd3va3LtBoPHI764N27PvuQgoOrI8A1uzM5WWA+VHlqdhS7biWA3j5yBMvlE+643y86IJLisrPJaP8JiddI1cCHEu8C0p5VXZv78OIKX8ztFec6I18uZkmj7zjSP30SIf/biUcswoz8Md/iVy5P7h9j4ne9+REltKbAk27q2V7Q6Xke5iOhLTcUg7Mrs42Z+XkkS2HTFuO8Rsh5hlE7VtopZz1JgBgrpGmcegLPuzssxr0N4d4/XdfVT5vXz+wrksKyugzGtQ6jEI5+DkW8J26M9Y9KYz9Jhum3TX4XbqdLbpI50hfsSc6z5NUOfzMsvvod7vpd7vZVb2tt7vpcrnQZ+hTUhSStrTGdZH4qwfTrAxkmBrLEEq2+wQ0jWWFQRYGPQzN+hjXtBHnc9Dlc9DmccYmUvnSJYj6cu4/4OWpMm+RIp9iTTbY0n2JlIj5wXqfB7WFoVYUxTinKIQSwoCOfmsm/vjXP6DZ/nQOQ18+4blk75+KSWWBFM62e8q2e+xxJISB/dvJ/u9dvPA4Zwg37gPI2Uj6x7911G+xMeaSecHfRSdYJPbVHY/rANaR/3dBpwzQQC3ALcANDSc2EVVZwd8zA5M/qioU8WRkrjtMGTZDGcshrJtr4MZi4GMxWDGpj/7M7PPtNgdT9EvLDILi2gD/qq5E5rfWJ8uoNgwKPHoFBo6hbpOoUcnrGsEdY2grhPI9sDwagKvEOhCcPg77GR3dCt7YHIPRpKYbROzHGK22z48lLEZtCz6TXvCdmkNqPR6qPZ5WBD0c0lpmFqflzq/l1k+D3V+LxXeoyekmU4IwazsgeuGyhIAMo5kZzzJtliS7dEk26IxHukbpD8z9vPVgZAu8GsCv64BYqTyELFsjvxv1Pk8LAz5uaa8iJXhAKvCQWr93lPyPt/K9x7bjUfX+MylU9NTRQiBR4AHfWz71WlgMhL5RN/OcQcnKeWtwK3g1sgnYbt5RxOCsKETNnTqj/HLJaUkYTts64vxtYe2s28owRnzyrh4RRVpAUOW7S4Zi2HLpi1tErXe+EVwvAPldeHWEAt0nZCuUWy4vQ0WZU8clnndXwyVXoPK7EmwCo8HIw8HMU0lKSWWFSGV7iSd6iSd7nYXsxvT7Mc0+8lk+qnLRKiyIlyW/U/FCdFJLQOUMUQxQ5SQtAKYeMng7jM+DXxCUOiBCi9UeQ3q/QEWhksoCdYQCJTg81XitnpOD5tbh3hoSyefu2w+lYWq3/hkm4xE3gbUj/p7FtAxCesdp739Nlof++G4xz3VVXjqG8C2SRyej2HUocJbV4dn1iykaZLcuBHkqKQjwds4G2/tLJxkiuSGDW559qQIUuBftBhvXQNOJE7i5VdACoQjwHFvC845D/+cBVjd/cT++DjC1tzF0tBsjdL3fZjQsjMwdx5k8L9+iZbREaNiqPrG1/EvWUL8pZfo+6//Hvf+qr/9bc6ZO4d7GpPs+Lf/of2+JLommF0WpLzAR913/xVPTSORhx9m8A+3jX5rZDSd8h98H7uwiP4/Pszwo48ihTupmCYlupQ0fP+7BIJBEnfcTvKRR8dtf/ZvfwNA/y9+SeyZZ8aUZfx+jJ+5kzX1/ud/up/PKHpxMbP+/ScA9PzghyQ3bXLjOjxLYEkZB275awbjJvW//29CrQfGDPVPVtXR8rEvUFbgZfavfkKgpx2/oY3U7n1LFlP9DXdSrvav/hVWV9eY7QdWr6byK18GoO1zn8ceGhpTHjx3HRWf/jQALZ+4BXnEfBkFl1xC2Z9/HIDmD3/kjc9Wc7CCJp7LVuG9cBnJaDP9T9yOVZAmU5DGCqWRniMOoxL0lAc9mV1SHsKzVxCctwKRhNj9j1Jpa8y1BcgBYICCSy7Gt2QB6e52hh+5H8drY/ssHK+FFcggZoXJpGNkBgY5CIxce8oWeOI+gqWLKKhaht6vYz78GkbMjyfqQzMNBOKY9j3f3DlE//Q0A7/61bjy2u/+K56amnH73mF1P/kxenExj3z/5/xg47Osbi2m+bdv7Pv1t/4P+DT6bv8tkWcfx/E4SMPGMdzb8i99FsdJE3n2KVL7diI1B6lLpCbBqxF+x9VIaZHYtIFMVycIiRTul1f4PATXnYPEIbVjO9bgICOJQYDw+wmsXgVIUjt34kQiY2qgWihEYNkyAJLbt+Ekxp6f0cNhfIsXA5DauhXniH1HLyrGt3CB+/pNm5AZ90T7svf+inB42bjP6mRMRiJ/HVgghJgDtAMfAD44CesdxzT7yBQlxz1u631kEhlwZLb8jX+HFGDrXaRjCbAtMiXZf8aoCYcyooVkpBdpZbCqIiPlUri3CTZA92akncFZlHTLNDlybmPAaoHDHQYuHB93e+yv4fBcXh/Krj6joWV0NNOgq+8reDdVIswM1rpDaGkDPe1xb1MeouldOEkDoZnUlfgpLfByoDfG/p4YnUMpDuzt49Lq6nHbFYDXsQnrGobXwJA2/kRs3PPKPAaaoU/6iUJbSqLJDC+93sr+3hg12zopaRsinXE4fG6mb0DwvTvdGRM/2TLEvEgKTbzRTtlmDfOTP+4E4PO7e6iLDYEAn6ET9Og4BUME9/SyuqH4pOOVQmL7Mtj+w4tFKrye4QMR0mYvQ1fswA6aWEETO3C498t6yJ7W1xoNPDEf3uEAwfZijLiPomUXUnrRDRipAL1f/SeEHHtCrOSm91E47+1kOjvp2DV25kiA0kvOIVxzKenkQcSO8eeVyj/1F4TOO4/4jk10/PSfsweSFJlwCiucwiqJ0939MJY1BJe98Tph6hgJL339f0tgxxzIpDGXtbsHGtPdL7WMTsJswUl6MBnCCozaQ7LfgUS6BS06REwcJFEzhOOx3UTssXG8NumOn9K6Z5iKpRspWzFAV7AtW2bheGz2v7IaKS2oAt43/n/Sue0z7p2K7HKEwZZfuL88ihwI2W9UsgCBTmrwJYTQsUMRpGG+0XwgQegp7Ji7b1nBAaRuHn5r7q3Xwknsc8tDEaRnbI8ny2djJ9xeaJlQFHxje95YfvlGeTgG2fNGtj0+h52syep++Hbg33Bbpn4ppfznN3v+TJlrRUoHKS0cJ4OUGRzHzC7p7JLCtpPu4iSx7QS2Fcey49hWFMuOYVlRd8kMk7EiZDJDWNYwRzt1omk+PJ4SPJ5ShtIF7OjS6Ir6CQXKWdXQyFlz5xAKlOHxFOP1lGAYxWja1Pdl7oul2dY+zPaOyMi83of64yO1a6+u0VgeZG55AQ1lQeqKA9QU+aks9FMa9FIc8hDyGuMmcHIcSTRt0Z+9alL7YJKDfVEO9Q2xr2eQtoEhDJHBb1gsr/WzpiHImfVBGkq1UZ9/Irsc/uzj2c8+kv38I2Qyw1hWhIk/d4HHU4rPV5VdKvH7avD5a/D7avD7a/H5qtH1wJR/zicqk4mQSrWSTLWRSraRTLVnm3u6SKe7MM0BpJz8Pj9CGCQyPlJ2gFmlFXg8YQwjjKGH0Y0CDKMAQw+hjywBdD2IpvvRtUD21oem+RCaF0140TQvQhinZL+ebtSkWXlESiebXAbJZAYxM4NkzEEymX7MzAAZc2DkNp0ZIJXqQ5A66vp0PYRhFOIxCtGN7BfJKMh+cYLuovnRdD+a5kPLfmGE5kEIDSEMBBoIgXSgN2bSOhCnZSBOS3+c1sEYw8k0mnDQhUNFgU59iZfaIg/VhTqVYYNCvwQsHMdEjj7gSXPkADjx4+lRB0j3byknvpLSW9MwjBC6nk0gRhjDKMQwwng8xXiMYgxPEV5PGR5vKV5PKV5vBR5PyYxPGm6bfpRMpv+NyoUdG/M/yD4RACF0hGa4iVX3uUlX82c/32D2Mw5zR1M3X793G/9+0xlcpy7jdtLUpFl5RAjNTSyeYmDOMb3GspI0HTzIw5t3srWlBY8WpdiXYGGlpLYwQ7lhEtaSaCQxzR4SiQNjaqrHywDm6jC3Eqh8kyfGoD8G/SPvzcjWqNya1djFhya86HoQQyse+/ioA8yYv3X/yHN0zU/M1NnYkuTZfVFeb46Ttrwsqa3kPWsWcPWKBvzTeKRlLgkh8HgK8Xgmr3/zcCLD9x7fw9mNJVy7smbS1quMp2rkM1AqY/PawQH+tKuHVw70s7cnhj1qqHTYb1Be4HMvh2VoaAIyVhrLTmBmkkRTKXRhYWg2mnDQhEN5yKChNDvHeGmAOWUFzC4rwOvREWhuDU3obu09u2iaZ9StN3t76oZb98XS3Luhnd+92syh/gRlIS8fO7+RD69rpCg4Pa+VOZN864Ht/OblQzz4uQtYVjt+Vkzl+KmmldNYKmOzpzvK3u4Y3dEU3cMp+uImGcu9LqnlSAIe94LOQZ+b5CvD7tJQFqShNEjwBIcUTweOI3lxfx+/fOEgT+/uJeTV+dC62XzyormUFbz1uAQpJalUing8TiKRIJFIkEwmSSaTpFIpTNMknU5jmia2beM4Dk62v72maWiahsfjwefz4fV6CYVCFBQUUFBQQHFxMcXFxej69OkqOBl2d0V5+0+e5wNn1/PP71yR63BmDJXIFQXY2Rnhv5/dz4Ob2wl74M/OquIdS0uRZopYLDayxOPxMfdt++hXjj+coD0eD4ZhjCRvYCSpZzIZ0uk06XR63LqEEBQXF1NRUUFVVRVVVVXU1tZSUlKSlxOmSSn50M9fZXtHhKf/8hJKQ9NjQNJMoNrIlRnJPUlnkUqlSKfTpFIpUqnUSI05mUyO1KIPL7PjcT4WTGDbFvGNcMfGN9YnhBipMYdCISoqKkbuh0IhgsEgoVCIQCBAIBDA6/WOJO1jjdc0TaLRKLFYjMHBQQYHB+nv76e3t5e9e/eOdM0MBoPMmjWL+vp6Ghsbqa2tzYua+4NbOnlpfz/fvn6ZSuKniErkyggp5TEtjuOMuz/69s2Ww00Ptm2PWSzLGrkdvWQyGSzLwjRNMpkMmUwG0zRHlnQ6PdKMcTQ+n49AIEAwGKSgoICqqqqR+4Om4J4t/WzoTFJbXsxfX7uSixZVTdlnLITA5/Ph8/koLy+nsbFxTLllWfT29tLe3k5bWxttbW3s2bMHAI/HQ0NDA3PnzmXu3LlUVVUd10HkVBhKmPzDg9tZOauIP1s3O9fhnDbyqmnlueee49GXx488DHvDFPmKcKRDR2z8oNJCXyGF3kJsadMZGz+Na5GviLA3jOVYdMW7xpWX+EsIGkEyToaexPhpXkv9pQSMAGk7TV+yb3y5rxS/4SdlpRhMDU74eo/mIWWlGE4Pj9++rwRd6KTsFHHziB4mEgq9hWhCI22lSVmpMWUAASMAEizHwnLcQQujR5ZqaORiPzgaiTvYRGoS3dApLyjH4/HQmewkKZM4uju6z9EcSgtKuWTOJfh8Pu49dC+D1iDSkNiGjaM7LK9ZzpfO/hIAX3r6Swylh8Zs65yac/jkyk/y2PZuvv7S50lZKcoKfMwuC+LVNS6edTEfXf5RAD726MfGxXpV41V8YPEHSFpJPv3kp8eV3zD/Bm6cfyODqUG+/MyXx5W/f9H7uXrO1XTFu/j6818fV37zsptZU7KG13e+zoNND+KP+PEm3VqubdjUNdSxdvlaZKnkP3b9x7jXf+HML7C6cjWbejbx4w0/Hlf+12v/msWli3m542Vu3XLruPK/O/fvmFM0h2dan+HX2389rvw7F36H6lA1jx58lNt3387+3hh9MZMVdUUEvTo/vOSHlPhLuG/ffdy/7/5xr//PK/6TgBHgDzv/wJP7n0SzNHexNYQtuGXpLZimycutL3Nw8CAiO5paOAIdnXOqzsG2bfYP7mcwOeju19KdQdQQBnOL5iKlpCPWQcIcOzLTo3moDdUipaQn0UPaHjtNrVfzUhl0u2T1JHowR7pgujc+3UdF0B2l1BXvGvluHeY3/JQHygHojHdiO26T2ic/8Elmzz6xg9yMaFoJhUJkAuP7EHuCHsrCZdjSptluHlfuC/koKyjDtE1a7PFzKgcKApSFykhZKVqd1vHlhQHKA+UkMgna5fj5vkNFIUr9pUTNKJ2MP1AUlhRS4i9hKDVE92D3uNlpSspKKPQW0p/qp3ew1x1iPEplRSVhb5iuRBf9g/1jXi+RLK9ZTtAI0hZrY//QfhCjZmsTcNass/AbfvYP7Wff8L43Xpxdz9Vzrsaje9jev539w+5ItJEYBLxv0fsQQtDU3cS+4X3uurOvNXSDjyz7CJqm8afWP7nl2ddKISnwFvCpMz6Fpmnctfcu9g7vHRlCLYWkrKCMb677Jrqu85PNP2H30O4x72924Ww+e95nAfjWS9+iJzL2QFpVWsUFay8A4O7U3aTiY/vTi2OYA0YIwdXLq7m3o5SD/UO0DyUZSpjUlwRx6nJ/gCsoKKBxYSOD/W4lQDd1/MN+/MN+BrsGeeDAAwDU+mpJFaVIF6ZJFaSwfUdv158Kw8kMvdE0tcUBgl63CchxHCKRCPHeOMH+ILqpu0vGvf3F/l+QTCSJJ+LUy/px67xvz30j94spRoo3DvJo0G61o2kadsZGt9xtHt6/EG+cbBaGcH+5jfpuGIZBYWEhQgh66cUyxyZir8dLaal7fdQeerBGzZkuhcTv8VNWWgZAp+wkY4/NTSFviLISt7zdaSfjuOVe7+Q3N+VVjVxRToVDfXH+9v5tPL+3jzMbivnue1YyvzKc67AmJKWkp6eHgwcPcvDgQZqbm0ll5/wIh8PU19dTU1NDTU0NVVVVFBQUTOoJVNu2iUQi9PYP8jd3vEpAprh+STHRyDBDQ0NEIpFxTV+6rhMOh0d67hw+9xAMBgkEAvj9fvx+/0gT1OETyR6PZ9o1JZ1qqteKohwHKSX3b+rgWw9uJ5G2+cIVC/jkRXMxpvl1OR3Hoaenh5aWFlpaWmhvb2dw8I3mPJ/PR1lZGSUlJSPJNBQKjUmWo89/jD4Xcbj7ZSwWIxqNEolEiMXGz90TDocpLi6mqKho5LaoqIjCwkIKCwsJBAJ52RtnOlCJXFFOQG80zd8/sI2Ht3axalYRP3jfauZXFuQ6rOOSTCbp6uqiu7ubgYEB+vv7GRwcJBaLYZrHPr+KEGKk5nw4KYfDYbpTGj95oYOrz5jHN995FoaRVy22eUUlckU5CQ9t6eBv79tGwrT5q6sX87HzGtFmwBzs6XSaRCIxpleQEAIhBJqm4fV68Xq9+Hw+/H7/uKaN/liaq3/8PKVBL/d/9nz8nunfPTKfzYiTnYqSK9eurGXtnFK+fvdW/vGhHTy1s5vvv3cVtcXTd8bDY3G4HfpESCn52j1bGU5k+M3H16oknkPTu8FPUaaRyrCfn9+8hn999wo2tQ5x9b89x/2bxvdiOl385uVmntjRzV9dvYglNZN7MWHl+KhErijHQQjB+89u4JEvXMj8ygK+cNsmvnDbRoaTJzq1bn5qOjTAPz60g8sXV/Lx849thk5l6qhErignYHZZiDs+eS5fvnIhD23p5O0/fp7XDg7kOqxToieS4tO/28CskgA/fP/qGXGuIN+pRK4oJ8jQNT5/+QLu+otzMXTBB259me89tgvTOt5LXucP03L49O82EE1Z/M+H11AUUNMBTwfqZKeinKQzGkp4+PMX8g8P7uCnT+/nuT19/Oj9k99NUWYcnLSFNB2kaSMtB2lLcKQ7bFwDhEDoAuHVER4Nzacj/MYxjXB9y+1LyTfu3UpT8yA/uekMFlVPz0FSpyOVyBVlEoR8Bv/6npVcuriSr9+zhWv//Xm+8fYlfHjd7Dcd/CItBztiYg+nsSPp7H0TO2bixDI4MRM7YSGTFjJz4jV94dfRgh70Ag9a2Ise9qIX+dCL3FujxI9e5EW8yYCn7z++m7vWt/HFKxZwvbps27RyUolcCPEt4BNAb/ahb0gpHz7ZoBQlX129vJozG4r56l1b+Pv7t/Pyli7+7qL5FNtgDaWxh9LYw+ns/RROLDP+es+Ghl7oRQ950Ev8eGZ50IIGWsBA8xsIj47wagiP5ta09ezEItKtmUvLQWZspOngpG2cpHsgsOPugcHqS5I+MIxMjp1bBIGb1Ev96KV+jOyil/q5e38vP316PzetbeALly84VR+ncoxOakBQNpHHpJTfP57XqQFBSj6TtsRJZHDiGeyoiR01caLZ+5G0W6OOpMkMpdGO+HoJj4Ze7HOXIncxRu570Qt9CL9+SoawO6bt/hLIHmCswRT2YBprIIU1kMKJjh31aQoIVgTd5F7swyjxoRf7R2r1etiLMNRpt6mkBgQppy0pJTggbQeZcZCWAxkHx7TdvzM2Mm3jmA4ybSPTFk7Kxkm5NVnn8JKw3ASetMbXoskm6SIfeqEX3+xCgit9DBmCX25p58XeCIsXlPE371lBddH0GESkeXW0iiCeiuCE5TJj89Bzh7jtiX2cW1bABxZWwbCJPZgifSiCTFnjXqOFDPSwFy3sRQt50EMetOCoXxQBA+E30Pw6wqejeXWERwdDqPlXTsJk1Mg/CkSAJuArUsrxE267z70FuAWgoaHhrObm8dPNvpV4Uxepx+4bX1A8C8rmg2PDwefHl5c0QmkjWGlofnl8edk8KK4HMwGtr40vr1gIhbWQjkLb+vHllUsgXAXJIejYNL68egWEyiDeD11bx5fXroZAMUS7oWfn+PJZZ4EvDJEO6N0zvrx+LXiDMNQK/fvHl88+FwwfDByCwUPjyxsvAM2A/n0wPMEAl7kXuz/b+/ZCtJMx88wKHRrPc+/37IJ4L4ya6xzDC3VnAyB7drqfkftCNxkafqhZ5a6/dzcyHc2+PrsOTxDKFrrJuO8AZFJI96ye+zwjiAxVuYk62gO2g5Q6oCGlhsQDUp8w8b45B6Gl0fwaWkmZm4S6X0LTk2h6El2PoxkJ9Plnop39LnS/jXbXB8avZvUHsVd9kN8/vYFFz30GIQSzS4NUhH0IBJz9cVj+bhhug3s+Of71530WFl3jfvYPfnF8+UV/CfMuhc4t8Oj4+cy5/O+g4RxoeRWe+ofx5Vd/B2pWwv6n4bmxP6y7Iik+2PUBZi1Yxc/O6cX32n+O/YRsL/YlP8B2SrB3vIS9dzO2VYBth7CtAhw7gCPKkOaxtO1LhMggNAshLBA2QtiI0tmgC0SiG1ID2ec5gARNIOrOACFgYB8k+tzy7PowPFB/jrv6nu2QcF8/whNwvzsAnZtG7ZtZvgKYla38tjVB+ogJwgLF7ncX3M83kxxbHipzv/sAzS+B5f7CCX/sz/DWntiJ8BOukQshngSqJyj6JvBfwD/ifjr/CPwA+PhE65FS3grcCm7TyjFHPoo1mCaTqhlfMBCARNRNBhOWeyEeBelMXN5vQDQKjjVxea8Ow1GwM0cpFzAUBcueuLzHASMK1lG232W75RkxcXlnBvQomPpRytOg2WAaE5d3pECYkPZCeqLyBAgNUgFIVzMu67Vnd+BkADKHr55zeL5yDTqzF7tIBCFTMbbc0qEvOVIuMmRzdLZcGnD4J3zGC7ZbWxVI9zmODlK6tTXNBi2DGPkyAwEQVSEQINp7IBN3y4Tt3hZWIuZdgNA1xPbbEVZkJFFoWgZRuwRx5vsRPh3x6BfQnBhCS7tJRQALr4LzP+9u61dfG//ZlS+BiqBbCTgKXRN8eF0jyf3FHOiLcaAvTm80zZyKEBPXhXNLImkbTNI+lOS8eeX87UfOwrf/8XHP03QTrcKLp6gEzBQMvjh+Ze/7DdJXgvPa7ThbHsFx/EjHi+N4kbYP56xPIm0deagJ2bMfKQ2kNEDqSKkjSxaCI5GmDcJBSuEeqKXm3sYzbq+dpA8yxbj10mwlwNKhO+7uavECsIxRu7Zwvy+H9+14EVhH/FLKeKA1mi0vBfuIXjqWb1R5uZs/xpT7IZMtT1S6FU1ApiZ/nvhJmzRLCNEIPCSlXP5Wz1Vt5MrpynEkd61v4/89spN42uLjF8zhs5fOJ+yfHv2xY2mLL9++icd3dPOes2bxnXetwDPNp+49nRytRn5S/yEhxOjq3TuBbSezPkWZ6TRN8L6z63nqyxdz4+o6/ufZA1z6/We5/fUWbCe3VyPa1xPjXf/5Ik/t6uHvrl3K996zUiXxPHGybeS/BVbj/mA5BHxSSjn+WmdHUDVyRXFtaRviHx7cQVPzIAurCvjSFQu5aln1KR32btkOP3/hID98Yg9Br85PP3gm588vP2XbV46dmo9cUaYpKSUPb+3ih0/sZn9vnCU1hXz20vlctaxqyq9ItLVtmL+5byub24Z529Iq/unG5VQW+qd0m8qJU4lcUaY525E8sLmdHz+5l0P9CeqKA3zk3Nm8b009JaHJvWDvjo4IP3pyD0/s6KY05OXb1y/j2pU1qgvgNKcSuaLkCduRPLWzm1++eJBXDgzg0QUXL6zg+tV1XLa4kgLfiQ3/SJgWj2/v5u4NbTy/t4+w3+ATF87lY+c3TpuTrcqbUwOCFCVP6JrgbcuqeduyanZ2Rrh3YzsPbOrgyZ096Jpg5awizp1bxqr6YuZVhKgvDeIzxl6dR0pJJGmxtyfK+uZB1jcP8uK+PuKmTV1xgC9esYCPnTeHoqBK4DOBqpErSh5wHMnrhwZ4bm8vL+/vZ0vbMFa2l4smoCToxWdoeA0N03Loi5mY9hsDcRrLgpw7r4wbVtextrFUzSGep1SNXFHymKYJzplbxjlzywCIpy329cQ42BfnQF+cgXiadMbBtB10TVAZ9lMR9lFfEuDM2SWUF5zYdTmV/KASuaLkoZDPYFV9Mavqi3MdijINqN7+iqIoeU4lckVRlDynErmiKEqeU4lcURQlz6lEriiKkudUIlcURclzKpEriqLkOZXIFUVR8lxOhugLIXqB479op6sc6JvEcKabmfz+1HvLXzP5/eXTe5stpaw48sGcJPKTIYRommiugZliJr8/9d7y10x+fzPhvammFUVRlDynErmiKEqey8dEfmuuA5hiM/n9qfeWv2by+8v795Z3beSKoijKWPlYI1cURVFGUYlcURQlz+VlIhdCrBZCvCKE2CSEaBJCrM11TJNJCPE5IcRuIcR2IcR3cx3PVBBC/KUQQgohynMdy2QRQnxPCLFLCLFFCHGvEKI41zGdLCHE1dl9cZ8Q4mu5jmeyCCHqhRBPCyF2Zr9nX8h1TCcjLxM58F3g21LK1cDfZf+eEYQQlwI3ACullMuA7+c4pEknhKgHrgRach3LJHsCWC6lXAnsAb6e43hOihBCB34KXAMsBW4SQizNbVSTxgK+IqVcAqwDPpPP7y1fE7kECrP3i4COHMYy2T4F/IuUMg0gpezJcTxT4UfAX+H+H2cMKeXjUkor++crwKxcxjMJ1gL7pJQHpJQmcBtuJSPvSSk7pZQbsvejwE6gLrdRnbh8TeRfBL4nhGjFrbHmdc3nCAuBC4UQrwohnhVCnJ3rgCaTEOJ6oF1KuTnXsUyxjwOP5DqIk1QHtI76u408TnZHI4RoBM4AXs1xKCds2l58WQjxJFA9QdE3gcuBL0kp7xZCvA/4BXDFqYzvZLzFezOAEtyfe2cDdwgh5so86if6Fu/vG8DbTm1Ek+fN3puU8v7sc76J+9P9d6cytikgJngsb/bDYyGEKADuBr4opYzkOp4TlZf9yIUQw0CxlFIKIQQwLKUsfKvX5QMhxKO4TSvPZP/eD6yTUvbmNLBJIIRYATwFJLIPzcJtFlsrpezKWWCTSAhxM/AXwOVSysRbPX86E0KcC3xLSnlV9u+vA0gpv5PTwCaJEMIDPAQ8JqX8Ya7jORn52rTSAVycvX8ZsDeHsUy2+3DfE0KIhYCX/JmZ7U1JKbdKKSullI1Sykbcn+pnzqAkfjXw18D1+Z7Es14HFggh5gghvMAHgAdyHNOkyFYAfwHszPckDtO4aeUtfAL4sRDCAFLALTmOZzL9EvilEGIbYAI351OzymnuPwAf8ISbJ3hFSvkXuQ3pxEkpLSHEZ4HHAB34pZRye47DmiznAx8GtgohNmUf+4aU8uHchXTi8rJpRVEURXlDvjatKIqiKFkqkSuKouQ5lcgVRVHynErkiqIoeU4lckVRlDynErmiKEqeU4lcURQlz/3/La6J3BvDIBQAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "EigenSolver(lambda x: x**2-5*np.cos(x)+5*x,L=-8,R = 3).plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "secure-duplicate",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "EigenSolver(lambda x:x**2,L=-3,R=3).plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "id": "wound-malawi",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\u001b[0;31mSignature:\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplot\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mscalex\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mscaley\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
       "\u001b[0;31mDocstring:\u001b[0m\n",
       "Plot y versus x as lines and/or markers.\n",
       "\n",
       "Call signatures::\n",
       "\n",
       "    plot([x], y, [fmt], *, data=None, **kwargs)\n",
       "    plot([x], y, [fmt], [x2], y2, [fmt2], ..., **kwargs)\n",
       "\n",
       "The coordinates of the points or line nodes are given by *x*, *y*.\n",
       "\n",
       "The optional parameter *fmt* is a convenient way for defining basic\n",
       "formatting like color, marker and linestyle. It's a shortcut string\n",
       "notation described in the *Notes* section below.\n",
       "\n",
       ">>> plot(x, y)        # plot x and y using default line style and color\n",
       ">>> plot(x, y, 'bo')  # plot x and y using blue circle markers\n",
       ">>> plot(y)           # plot y using x as index array 0..N-1\n",
       ">>> plot(y, 'r+')     # ditto, but with red plusses\n",
       "\n",
       "You can use `.Line2D` properties as keyword arguments for more\n",
       "control on the appearance. Line properties and *fmt* can be mixed.\n",
       "The following two calls yield identical results:\n",
       "\n",
       ">>> plot(x, y, 'go--', linewidth=2, markersize=12)\n",
       ">>> plot(x, y, color='green', marker='o', linestyle='dashed',\n",
       "...      linewidth=2, markersize=12)\n",
       "\n",
       "When conflicting with *fmt*, keyword arguments take precedence.\n",
       "\n",
       "\n",
       "**Plotting labelled data**\n",
       "\n",
       "There's a convenient way for plotting objects with labelled data (i.e.\n",
       "data that can be accessed by index ``obj['y']``). Instead of giving\n",
       "the data in *x* and *y*, you can provide the object in the *data*\n",
       "parameter and just give the labels for *x* and *y*::\n",
       "\n",
       ">>> plot('xlabel', 'ylabel', data=obj)\n",
       "\n",
       "All indexable objects are supported. This could e.g. be a `dict`, a\n",
       "`pandas.DataFrame` or a structured numpy array.\n",
       "\n",
       "\n",
       "**Plotting multiple sets of data**\n",
       "\n",
       "There are various ways to plot multiple sets of data.\n",
       "\n",
       "- The most straight forward way is just to call `plot` multiple times.\n",
       "  Example:\n",
       "\n",
       "  >>> plot(x1, y1, 'bo')\n",
       "  >>> plot(x2, y2, 'go')\n",
       "\n",
       "- Alternatively, if your data is already a 2d array, you can pass it\n",
       "  directly to *x*, *y*. A separate data set will be drawn for every\n",
       "  column.\n",
       "\n",
       "  Example: an array ``a`` where the first column represents the *x*\n",
       "  values and the other columns are the *y* columns::\n",
       "\n",
       "  >>> plot(a[0], a[1:])\n",
       "\n",
       "- The third way is to specify multiple sets of *[x]*, *y*, *[fmt]*\n",
       "  groups::\n",
       "\n",
       "  >>> plot(x1, y1, 'g^', x2, y2, 'g-')\n",
       "\n",
       "  In this case, any additional keyword argument applies to all\n",
       "  datasets. Also this syntax cannot be combined with the *data*\n",
       "  parameter.\n",
       "\n",
       "By default, each line is assigned a different style specified by a\n",
       "'style cycle'. The *fmt* and line property parameters are only\n",
       "necessary if you want explicit deviations from these defaults.\n",
       "Alternatively, you can also change the style cycle using\n",
       ":rc:`axes.prop_cycle`.\n",
       "\n",
       "\n",
       "Parameters\n",
       "----------\n",
       "x, y : array-like or scalar\n",
       "    The horizontal / vertical coordinates of the data points.\n",
       "    *x* values are optional and default to ``range(len(y))``.\n",
       "\n",
       "    Commonly, these parameters are 1D arrays.\n",
       "\n",
       "    They can also be scalars, or two-dimensional (in that case, the\n",
       "    columns represent separate data sets).\n",
       "\n",
       "    These arguments cannot be passed as keywords.\n",
       "\n",
       "fmt : str, optional\n",
       "    A format string, e.g. 'ro' for red circles. See the *Notes*\n",
       "    section for a full description of the format strings.\n",
       "\n",
       "    Format strings are just an abbreviation for quickly setting\n",
       "    basic line properties. All of these and more can also be\n",
       "    controlled by keyword arguments.\n",
       "\n",
       "    This argument cannot be passed as keyword.\n",
       "\n",
       "data : indexable object, optional\n",
       "    An object with labelled data. If given, provide the label names to\n",
       "    plot in *x* and *y*.\n",
       "\n",
       "    .. note::\n",
       "        Technically there's a slight ambiguity in calls where the\n",
       "        second label is a valid *fmt*. ``plot('n', 'o', data=obj)``\n",
       "        could be ``plt(x, y)`` or ``plt(y, fmt)``. In such cases,\n",
       "        the former interpretation is chosen, but a warning is issued.\n",
       "        You may suppress the warning by adding an empty format string\n",
       "        ``plot('n', 'o', '', data=obj)``.\n",
       "\n",
       "Returns\n",
       "-------\n",
       "list of `.Line2D`\n",
       "    A list of lines representing the plotted data.\n",
       "\n",
       "Other Parameters\n",
       "----------------\n",
       "scalex, scaley : bool, default: True\n",
       "    These parameters determine if the view limits are adapted to the\n",
       "    data limits. The values are passed on to `autoscale_view`.\n",
       "\n",
       "**kwargs : `.Line2D` properties, optional\n",
       "    *kwargs* are used to specify properties like a line label (for\n",
       "    auto legends), linewidth, antialiasing, marker face color.\n",
       "    Example::\n",
       "\n",
       "    >>> plot([1, 2, 3], [1, 2, 3], 'go-', label='line 1', linewidth=2)\n",
       "    >>> plot([1, 2, 3], [1, 4, 9], 'rs', label='line 2')\n",
       "\n",
       "    If you make multiple lines with one plot call, the kwargs\n",
       "    apply to all those lines.\n",
       "\n",
       "    Here is a list of available `.Line2D` properties:\n",
       "\n",
       "    Properties:\n",
       "    agg_filter: a filter function, which takes a (m, n, 3) float array and a dpi value, and returns a (m, n, 3) array\n",
       "    alpha: float or None\n",
       "    animated: bool\n",
       "    antialiased or aa: bool\n",
       "    clip_box: `.Bbox`\n",
       "    clip_on: bool\n",
       "    clip_path: Patch or (Path, Transform) or None\n",
       "    color or c: color\n",
       "    contains: unknown\n",
       "    dash_capstyle: {'butt', 'round', 'projecting'}\n",
       "    dash_joinstyle: {'miter', 'round', 'bevel'}\n",
       "    dashes: sequence of floats (on/off ink in points) or (None, None)\n",
       "    data: (2, N) array or two 1D arrays\n",
       "    drawstyle or ds: {'default', 'steps', 'steps-pre', 'steps-mid', 'steps-post'}, default: 'default'\n",
       "    figure: `.Figure`\n",
       "    fillstyle: {'full', 'left', 'right', 'bottom', 'top', 'none'}\n",
       "    gid: str\n",
       "    in_layout: bool\n",
       "    label: object\n",
       "    linestyle or ls: {'-', '--', '-.', ':', '', (offset, on-off-seq), ...}\n",
       "    linewidth or lw: float\n",
       "    marker: marker style string, `~.path.Path` or `~.markers.MarkerStyle`\n",
       "    markeredgecolor or mec: color\n",
       "    markeredgewidth or mew: float\n",
       "    markerfacecolor or mfc: color\n",
       "    markerfacecoloralt or mfcalt: color\n",
       "    markersize or ms: float\n",
       "    markevery: None or int or (int, int) or slice or List[int] or float or (float, float) or List[bool]\n",
       "    path_effects: `.AbstractPathEffect`\n",
       "    picker: unknown\n",
       "    pickradius: float\n",
       "    rasterized: bool or None\n",
       "    sketch_params: (scale: float, length: float, randomness: float)\n",
       "    snap: bool or None\n",
       "    solid_capstyle: {'butt', 'round', 'projecting'}\n",
       "    solid_joinstyle: {'miter', 'round', 'bevel'}\n",
       "    transform: `matplotlib.transforms.Transform`\n",
       "    url: str\n",
       "    visible: bool\n",
       "    xdata: 1D array\n",
       "    ydata: 1D array\n",
       "    zorder: float\n",
       "\n",
       "See Also\n",
       "--------\n",
       "scatter : XY scatter plot with markers of varying size and/or color (\n",
       "    sometimes also called bubble chart).\n",
       "\n",
       "Notes\n",
       "-----\n",
       "**Format Strings**\n",
       "\n",
       "A format string consists of a part for color, marker and line::\n",
       "\n",
       "    fmt = '[marker][line][color]'\n",
       "\n",
       "Each of them is optional. If not provided, the value from the style\n",
       "cycle is used. Exception: If ``line`` is given, but no ``marker``,\n",
       "the data will be a line without markers.\n",
       "\n",
       "Other combinations such as ``[color][marker][line]`` are also\n",
       "supported, but note that their parsing may be ambiguous.\n",
       "\n",
       "**Markers**\n",
       "\n",
       "=============    ===============================\n",
       "character        description\n",
       "=============    ===============================\n",
       "``'.'``          point marker\n",
       "``','``          pixel marker\n",
       "``'o'``          circle marker\n",
       "``'v'``          triangle_down marker\n",
       "``'^'``          triangle_up marker\n",
       "``'<'``          triangle_left marker\n",
       "``'>'``          triangle_right marker\n",
       "``'1'``          tri_down marker\n",
       "``'2'``          tri_up marker\n",
       "``'3'``          tri_left marker\n",
       "``'4'``          tri_right marker\n",
       "``'s'``          square marker\n",
       "``'p'``          pentagon marker\n",
       "``'*'``          star marker\n",
       "``'h'``          hexagon1 marker\n",
       "``'H'``          hexagon2 marker\n",
       "``'+'``          plus marker\n",
       "``'x'``          x marker\n",
       "``'D'``          diamond marker\n",
       "``'d'``          thin_diamond marker\n",
       "``'|'``          vline marker\n",
       "``'_'``          hline marker\n",
       "=============    ===============================\n",
       "\n",
       "**Line Styles**\n",
       "\n",
       "=============    ===============================\n",
       "character        description\n",
       "=============    ===============================\n",
       "``'-'``          solid line style\n",
       "``'--'``         dashed line style\n",
       "``'-.'``         dash-dot line style\n",
       "``':'``          dotted line style\n",
       "=============    ===============================\n",
       "\n",
       "Example format strings::\n",
       "\n",
       "    'b'    # blue markers with default shape\n",
       "    'or'   # red circles\n",
       "    '-g'   # green solid line\n",
       "    '--'   # dashed line with default color\n",
       "    '^k:'  # black triangle_up markers connected by a dotted line\n",
       "\n",
       "**Colors**\n",
       "\n",
       "The supported color abbreviations are the single letter codes\n",
       "\n",
       "=============    ===============================\n",
       "character        color\n",
       "=============    ===============================\n",
       "``'b'``          blue\n",
       "``'g'``          green\n",
       "``'r'``          red\n",
       "``'c'``          cyan\n",
       "``'m'``          magenta\n",
       "``'y'``          yellow\n",
       "``'k'``          black\n",
       "``'w'``          white\n",
       "=============    ===============================\n",
       "\n",
       "and the ``'CN'`` colors that index into the default property cycle.\n",
       "\n",
       "If the color is the only part of the format string, you can\n",
       "additionally use any  `matplotlib.colors` spec, e.g. full names\n",
       "(``'green'``) or hex strings (``'#008000'``).\n",
       "\u001b[0;31mFile:\u001b[0m      ~/miniconda3/envs/mysci/lib/python3.8/site-packages/matplotlib/pyplot.py\n",
       "\u001b[0;31mType:\u001b[0m      function\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "accessory-wichita",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[150.  ,   0.  ,   0.  , ...,   0.  ,   0.  ,   0.  ],\n",
       "       [-25.  , 146.04,   0.  , ...,   0.  ,   0.  ,   0.  ],\n",
       "       [  0.  , -25.  , 142.16, ...,   0.  ,   0.  ,   0.  ],\n",
       "       ...,\n",
       "       [  0.  ,   0.  ,   0.  , ..., 142.16,   0.  ,   0.  ],\n",
       "       [  0.  ,   0.  ,   0.  , ..., -25.  , 146.04,   0.  ],\n",
       "       [  0.  ,   0.  ,   0.  , ...,   0.  , -25.  , 150.  ]])"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "L = 10\n",
    "NUM = 100\n",
    "x = np.linspace(-L,L,NUM+1) # NUM+1 points\n",
    "xdelta = 2*L / NUM\n",
    "V = x**2\n",
    "H = np.diag(2*np.ones_like(x)/xdelta**2 + V) - np.diag(np.ones(len(x)-1)/xdelta**2,-1)\n",
    "H"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "narrative-person",
   "metadata": {
    "collapsed": true,
    "jupyter": {
     "outputs_hidden": true
    },
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(array([  0.9974937 ,   2.98744303,   4.96727726,   6.93691745,\n",
       "          8.89628257,  10.84528944,  12.78385258,  14.71188413,\n",
       "         16.62929376,  18.53598851,  20.43187268,  22.31684772,\n",
       "         24.19081206,  26.05366093,  27.90528626,  29.74557645,\n",
       "         31.57441618,  33.39168623,  35.19726324,  36.99101947,\n",
       "         38.77282253,  40.54253512,  42.30001469,  44.04511314,\n",
       "         45.77767643,  47.49754417,  49.20454922,  50.89851718,\n",
       "         52.57926585,  54.24660469,  55.9003341 ,  57.54024477,\n",
       "         59.16611685,  60.77771903,  62.37480756,  63.95712514,\n",
       "         65.52439959,  67.07634244,  68.61264729,  70.13298794,\n",
       "         71.63701634,  73.12436021,  74.59462051,  76.04736876,\n",
       "         77.48214424,  78.89845143,  80.29575777,  81.67349204,\n",
       "         83.03104322,  84.36775944,  85.68294536,  86.97585506,\n",
       "         88.24567551,  89.49149347,  90.71223639,  91.90657879,\n",
       "         93.07278336,  94.20856437,  95.31028846,  96.3749999 ,\n",
       "         97.38621974,  98.37245446,  99.1555019 , 100.22408588,\n",
       "        100.48091819, 102.12978431, 102.1517205 , 104.26734515,\n",
       "        104.26825891, 106.65645023, 106.65647521, 109.28385247,\n",
       "        109.28385295, 112.14672511, 112.14672512, 115.25070962,\n",
       "        115.25070962, 118.60733114, 118.60733114, 122.2333539 ,\n",
       "        122.2333539 , 126.15121206, 126.15121206, 130.39023824,\n",
       "        130.39023824, 134.98880748, 134.98880748, 139.997867  ,\n",
       "        139.997867  , 145.48688648, 145.48688648, 151.55449627,\n",
       "        151.55449627, 158.3492786 , 158.3492786 , 166.1160842 ,\n",
       "        166.1160842 , 175.32279827, 175.32279827, 187.17026865,\n",
       "        187.17026865]),\n",
       " array([[-1.38703892e-19, -2.00088757e-18, -6.35951925e-19, ...,\n",
       "          3.43263605e-01, -3.69258395e-01,  0.00000000e+00],\n",
       "        [-1.11102729e-20, -3.44304020e-19, -7.88762405e-19, ...,\n",
       "         -3.47695801e-01,  5.49017350e-01,  0.00000000e+00],\n",
       "        [ 1.99471522e-19,  1.76388734e-18, -3.37288922e-18, ...,\n",
       "          6.39966350e-02, -5.33990849e-01,  0.00000000e+00],\n",
       "        ...,\n",
       "        [ 1.40637501e-19,  1.71814751e-18, -3.57733821e-18, ...,\n",
       "          0.00000000e+00,  0.00000000e+00, -5.33990849e-01],\n",
       "        [ 4.24115913e-20,  4.13829760e-19, -6.46393338e-19, ...,\n",
       "          0.00000000e+00,  0.00000000e+00,  5.49017350e-01],\n",
       "        [-2.46604926e-20, -3.52418595e-19, -2.10264091e-19, ...,\n",
       "          0.00000000e+00,  0.00000000e+00, -3.69258395e-01]]))"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "LA.eigh(H)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "opened-nursery",
   "metadata": {
    "collapsed": true,
    "jupyter": {
     "outputs_hidden": true
    },
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\u001b[0;31mSignature:\u001b[0m \u001b[0mLA\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0meigh\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mUPLO\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'L'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
       "\u001b[0;31mDocstring:\u001b[0m\n",
       "Return the eigenvalues and eigenvectors of a complex Hermitian\n",
       "(conjugate symmetric) or a real symmetric matrix.\n",
       "\n",
       "Returns two objects, a 1-D array containing the eigenvalues of `a`, and\n",
       "a 2-D square array or matrix (depending on the input type) of the\n",
       "corresponding eigenvectors (in columns).\n",
       "\n",
       "Parameters\n",
       "----------\n",
       "a : (..., M, M) array\n",
       "    Hermitian or real symmetric matrices whose eigenvalues and\n",
       "    eigenvectors are to be computed.\n",
       "UPLO : {'L', 'U'}, optional\n",
       "    Specifies whether the calculation is done with the lower triangular\n",
       "    part of `a` ('L', default) or the upper triangular part ('U').\n",
       "    Irrespective of this value only the real parts of the diagonal will\n",
       "    be considered in the computation to preserve the notion of a Hermitian\n",
       "    matrix. It therefore follows that the imaginary part of the diagonal\n",
       "    will always be treated as zero.\n",
       "\n",
       "Returns\n",
       "-------\n",
       "w : (..., M) ndarray\n",
       "    The eigenvalues in ascending order, each repeated according to\n",
       "    its multiplicity.\n",
       "v : {(..., M, M) ndarray, (..., M, M) matrix}\n",
       "    The column ``v[:, i]`` is the normalized eigenvector corresponding\n",
       "    to the eigenvalue ``w[i]``.  Will return a matrix object if `a` is\n",
       "    a matrix object.\n",
       "\n",
       "Raises\n",
       "------\n",
       "LinAlgError\n",
       "    If the eigenvalue computation does not converge.\n",
       "\n",
       "See Also\n",
       "--------\n",
       "eigvalsh : eigenvalues of real symmetric or complex Hermitian\n",
       "           (conjugate symmetric) arrays.\n",
       "eig : eigenvalues and right eigenvectors for non-symmetric arrays.\n",
       "eigvals : eigenvalues of non-symmetric arrays.\n",
       "scipy.linalg.eigh : Similar function in SciPy (but also solves the\n",
       "                    generalized eigenvalue problem).\n",
       "\n",
       "Notes\n",
       "-----\n",
       "\n",
       ".. versionadded:: 1.8.0\n",
       "\n",
       "Broadcasting rules apply, see the `numpy.linalg` documentation for\n",
       "details.\n",
       "\n",
       "The eigenvalues/eigenvectors are computed using LAPACK routines ``_syevd``,\n",
       "``_heevd``.\n",
       "\n",
       "The eigenvalues of real symmetric or complex Hermitian matrices are\n",
       "always real. [1]_ The array `v` of (column) eigenvectors is unitary\n",
       "and `a`, `w`, and `v` satisfy the equations\n",
       "``dot(a, v[:, i]) = w[i] * v[:, i]``.\n",
       "\n",
       "References\n",
       "----------\n",
       ".. [1] G. Strang, *Linear Algebra and Its Applications*, 2nd Ed., Orlando,\n",
       "       FL, Academic Press, Inc., 1980, pg. 222.\n",
       "\n",
       "Examples\n",
       "--------\n",
       ">>> from numpy import linalg as LA\n",
       ">>> a = np.array([[1, -2j], [2j, 5]])\n",
       ">>> a\n",
       "array([[ 1.+0.j, -0.-2.j],\n",
       "       [ 0.+2.j,  5.+0.j]])\n",
       ">>> w, v = LA.eigh(a)\n",
       ">>> w; v\n",
       "array([0.17157288, 5.82842712])\n",
       "array([[-0.92387953+0.j        , -0.38268343+0.j        ], # may vary\n",
       "       [ 0.        +0.38268343j,  0.        -0.92387953j]])\n",
       "\n",
       ">>> np.dot(a, v[:, 0]) - w[0] * v[:, 0] # verify 1st e-val/vec pair\n",
       "array([5.55111512e-17+0.0000000e+00j, 0.00000000e+00+1.2490009e-16j])\n",
       ">>> np.dot(a, v[:, 1]) - w[1] * v[:, 1] # verify 2nd e-val/vec pair\n",
       "array([0.+0.j, 0.+0.j])\n",
       "\n",
       ">>> A = np.matrix(a) # what happens if input is a matrix object\n",
       ">>> A\n",
       "matrix([[ 1.+0.j, -0.-2.j],\n",
       "        [ 0.+2.j,  5.+0.j]])\n",
       ">>> w, v = LA.eigh(A)\n",
       ">>> w; v\n",
       "array([0.17157288, 5.82842712])\n",
       "matrix([[-0.92387953+0.j        , -0.38268343+0.j        ], # may vary\n",
       "        [ 0.        +0.38268343j,  0.        -0.92387953j]])\n",
       "\n",
       ">>> # demonstrate the treatment of the imaginary part of the diagonal\n",
       ">>> a = np.array([[5+2j, 9-2j], [0+2j, 2-1j]])\n",
       ">>> a\n",
       "array([[5.+2.j, 9.-2.j],\n",
       "       [0.+2.j, 2.-1.j]])\n",
       ">>> # with UPLO='L' this is numerically equivalent to using LA.eig() with:\n",
       ">>> b = np.array([[5.+0.j, 0.-2.j], [0.+2.j, 2.-0.j]])\n",
       ">>> b\n",
       "array([[5.+0.j, 0.-2.j],\n",
       "       [0.+2.j, 2.+0.j]])\n",
       ">>> wa, va = LA.eigh(a)\n",
       ">>> wb, vb = LA.eig(b)\n",
       ">>> wa; wb\n",
       "array([1., 6.])\n",
       "array([6.+0.j, 1.+0.j])\n",
       ">>> va; vb\n",
       "array([[-0.4472136 +0.j        , -0.89442719+0.j        ], # may vary\n",
       "       [ 0.        +0.89442719j,  0.        -0.4472136j ]])\n",
       "array([[ 0.89442719+0.j       , -0.        +0.4472136j],\n",
       "       [-0.        +0.4472136j,  0.89442719+0.j       ]])\n",
       "\u001b[0;31mFile:\u001b[0m      ~/miniconda3/envs/mysci/lib/python3.8/site-packages/numpy/linalg/linalg.py\n",
       "\u001b[0;31mType:\u001b[0m      function\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "LA.eigh?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "dominican-commercial",
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7f089317a9a0>]"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(LA.eigh(H)[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "norwegian-donna",
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9974937026000475"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "LA.eigh(H)[0][0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "hourly-research",
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7f08814cd1c0>,\n",
       " <matplotlib.lines.Line2D at 0x7f08814cd2b0>,\n",
       " <matplotlib.lines.Line2D at 0x7f08814cd370>]"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXwAAAD4CAYAAADvsV2wAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAA9zUlEQVR4nO3dd3xc13Xo+9+aQSd6I0ACIEiwiEUkKIJVpESRVI1iSraUSHG7iRNZtuUr2ylWrp28fOI4z479XOISWY6L7PjalmRJlmVVy2oUVQiSIMXeCQJEB9GIOjP7/XFmIJQpZzAzqOv7+eAzwJw9Z28cAAt71tlFjDEopZSa/hwT3QCllFLjQwO+UkrNEBrwlVJqhtCAr5RSM4QGfKWUmiHiJroBweTm5prS0tKJboZSSk0Ze/fubTbG5Pk7NqkDfmlpKZWVlRPdDKWUmjJE5HygY5rSUUqpGUIDvlJKzRAa8JVSaobQgK+UUjOEBnyllJohNOArpdQMoQFfKaVmCA34SoXpD0caePVE00Q3Q6mwTeqJV0pNJu3dA/zzU4f4bdVFAP68oph/+tNlpCbqn5GaGvQ3VSkb3jnbyv2/2k9jZx+f3bGYPpebB189zZtnWvjPu1dTXpw50U1UKiRN6SgVQlefi3t+XklSvJPHP7GJ+3cs4h9uuoJff3wjbo/h4z+vpHfAPdHNVCokDfhKhfDw7nO0dQ/w7bvKWTWkJ7+2NJuv3bGSho4+fr3nwsQ1UCmbNOArFURXn4sfvn6G65bksbIoc9TxjWU5rCvN5r9eOa29fDXpacBXKoifvWn17u/fsdjvcRHh/h2LqO/o5ZFK7eWryU0DvlIBXO5z8cPXzrB1SV7Qm7KbynJYW5rFf71ymj6X9vLV5KUBX6kAfvbmeS51D3D/9kVBy4kI929fTF17L49U1oxT65QKnwZ8pfzweAw/eeMsWxblsrokK2T5qxfmcFVJJj96/QzGmHFooVLhi0rAF5GbROS4iJwSkQf8HN8pIgdFpEpEKkVkczTqVSpW9lZforGzjzvWFNkqLyLcsaaYcy3dHKvvjHHrlBqbiAO+iDiB7wE3A8uAu0Vk2YhiLwGrjDHlwF8B/x1pvUrF0nOH6klwOth2Rb7t19ywfDYOgWcP1cewZUqNXTR6+OuAU8aYM8aYfuBXwM6hBYwxXea997mzAH3PqyYtYwzPHapny6Jc0pLibb8uNzWRtaXZPHeoLoatU2rsohHw5wJDx6PVeJ8bRkRuF5FjwO+xevl+icg93rRPZVOTLlClxt+7te3UtvVw04qCsF9784oCTjR0cbqpKwYtUyoy0Qj44ue5UT14Y8wTxpgrgNuALwU6mTHmIWNMhTGmIi8vLwrNUyo8zx6qJ84hXL9sdtivvdH7T+I5TeuoSSgaAb8GKB7ydRFwMVBhY8xrQJmI5EahbqWiypfO2ViWQ2ZKQtivL8xIprw4M3DA76yH87sjbKVSYxONgL8HWCQi80UkAbgLeGpoARFZKCLi/fwqIAFoiULdSkXV8YZOzjZfHlM6x+fmFQW8W9vOhdbu4Qd6LsFPboGf3AxHnvL/YqViKOKAb4xxAfcBzwNHgUeMMYdF5F4Ruddb7APAIRGpwhrR8+dGByurSejZd+sRgRuWRRLwCwF4/vCQXr7bBY/+L2irhvxl8Pg9ULsvwtYqFZ6ojMM3xjxjjFlsjCkzxnzZ+9yDxpgHvZ9/1Riz3BhTbozZaIzZFY16lYq25w/Xs7Y0m7y0xDGfoyQnhWWF6cPTOs//HzjzCvzpt+Ejv4VZefDLu6BdZ+aq8aMzbZXyauzo5Vh9J9vDGHsfyPal+ey/0EZn7wAc+BW88wPYeB+s/iCk5sMHH4GBHvjl3eDxRKH1SoWmAV8pr92nrdtKVy+MfDzBprJc3B7D22daYd/PIG8pXP+v7xXIXwo3fhnqD0LNnojrU8oODfhKee0+3UxGcjzLCtMjPtdV8zJJjHPw9skaK6Av2gEO5/BCy3aCMwEOPxFxfUrZoQFfKazhmG+camHjghwcDn9TS8KTGOdkbWk2nSfeAHc/lF4zulBSBiy8Ho48qWkdNS404CsFVLd2U9vWw9ULc6J2zk0Lcyhqr8SIE+Zt9F9o+e3QWQcX3opavUoFogFfKeCNU1b+flMU8vc+V5flsslxmEuZKyAxzX+hJTdBXJKmddS40ICvFPDG6WYK0pNYkDsraudcketgpeMMVXErAxdKTINF18OR34JHd8tSsaUBX814Ho/hrdMtbCrLwTshPCqcNW8Th4enOsqCF1z+fuhq0CUXVMxpwFcz3vGGTlou90c1nQPA2VdxSzzPtc8bvczCUItvhPgUTeuomNOAr2a8N041A0T1hi0AZ1+nr3ANvSQO1uFXwiwr6GtaR8WYBnw14+0+3cKC3FkUZiRH76Q9l6DuAMmLtpKXlsgbp0OsFbjkFuhuhoZD0WuDUiNowFczmsvt4Z2zrWwsi3Lv/vxuwCALrmVTWQ5vnm4Jvrn5vKutx3O6zJSKHQ34akY7WtdJV5+L9QvsB/zvV32fH737o+CFzr4Occkwdw3r5+fQ3NXH2ebLgctnzIXsBRrwVUxpwFcz2jvnWgFYV5ptq3xzTzM/PPhDHjzwIB39HYELNhyCgishLpF187MA2OOtK6B5V1vvDHTWrYoRDfhqRttztpXi7GQKMpJslX/i5BO4jItedy+/O/27wAWbT0LuIgDK8lLJnpXAO2cvBT956RbobdM8vooZDfhqxjLGsOdcK2tt9u7dHjePnXiM9QXrWZGzgsdOPOY/L9/bAV31gwFfRKiYlxW6h1+qeXwVWxrw1Yx1pvkyLZf7badzdl/czcXLF7ljyR3cueROTrWdYn/j/tEFW05ajzmLBp9aNz+b6tZuGjp6A1eQUQRZpXD+jTC+C6Xs04CvZqw9Z60e99r59gL+IyceITspm+3F27mp9CZS41N59MSjows2n7Iec98L+L53Ee+cDdXL32z18DWPr2JAA76asd4510puaoKt9XPqL9fzWs1rvH/R+4l3xpMSn8KtC27lhXMv0NbbNrxwy0kQJ2TNH3xq+Zx0UhKcNm7cbrby+I2Hw/+GlApBA76asfaca6ViXrat9XMeP/k4xhg+sOgDg8/dueRO+j39/Pb0b4cXbj4JWfMgLmHwqTing6tKsmz08H15fE3rqOjTgK9mpPr2Xi609thO57xw7gXWFa6jKK1o8LnFWYu5MvdKXjj/wvDCzSchd/Goc6wtzeZ4QyftPQOBK8osgcx5cO51W+1SKhwa8NWMFM74e7fHTXVnNctylo06tjR7KWfbz743WsfjgdbTkLNwVNm187MwBvaet5HHP/+G5vFV1EUl4IvITSJyXEROicgDfo5/UEQOej92i8iqaNSr1Fi9c7aFWQlOlhYG2JhkiLrLdQx4BpiXNm/UsZL0Ejr7O2nra7OeaL8Art5hN2x9VhdnEe+U0OPx511trcXTfNzOt6KUbREHfBFxAt8DbgaWAXeLyMiu0FngWmPMSuBLwEOR1qtUJPacvcRV87KIc4b+EzjfcR6wgvtI89LnDSvjb0imT3KCkxVzM0LfuC1ebz1eeDtk25QKRzR6+OuAU8aYM8aYfuBXwM6hBYwxu40xvm7NW0ARSk2Qtu5+jjd02p5w5Qvmpemlo475An51Z7X1xOCQzNE5fLBSSAdr2ugdCLIMck4ZpOTAhXdstU8pu6IR8OcCF4Z8XeN9LpCPAc8GOigi94hIpYhUNjU1RaF5Sg1Xec7qe6yzecO2urOalLgUcpNHb5BSlFqEQxzv9fCbT0BSBszyv5nK2tJsBtyGqgttgSsUsXr52sNXURaNgO9vTJvfdWBF5DqsgP/5QCczxjxkjKkwxlTk5eVFoXlKDbfnXCvxTqG8ONNW+fMd5ylJL/E7fDPeGc+cWXOo7vD28FtOWumcAEM9K0q9C6mFGp5ZvA5aTsHlEOvoKxWGaAT8GqB4yNdFwMWRhURkJfDfwE5jjP4WqwnzzrlWVhZlkhTvtFW+uqOakrTR+XufeenzhvTwT/m9YeuTmZLAktlpg6OEAtI8voqBaAT8PcAiEZkvIgnAXcBTQwuISAnwOPBhY8yJKNSp1Jj09Lt5t6bddv5+wDNAbVftYK7en5L0Es53nMf0dkLnRb9DModaOz+Lfecv4XIHGXY5ZzU44jXgq6iKOOAbY1zAfcDzwFHgEWPMYRG5V0Tu9Rb7ZyAH+L6IVIlIZaT1KjUW+y9cwuUxg2vUh3Kx6yJu4/Y7QsdnXvo8ul3dtNTttZ4IcMPWZ938HC73uzla1xm4UHwyFK7SG7cqquKicRJjzDPAMyOee3DI538N/HU06lIqEnvOXkIE1syLfISOz+DQzLpKciFoSgfem+z1zrlWrizKCFyweD1U/ghc/cOWaVBqrHSmrZpR9pxrZcnsNDKS422VDzYG38c3Iau65SiIw9qqMIiCjCSKs5Pt3bh19UL9u7baqlQoGvDVjOFye9hXfcn2cEywAn5afBpZiYFTQIWphcRJHOc7q621cOISQ553bWk2e861Bt/YfPDG7Vu226tUMBrw1Yxx+GIH3f1u2zdswTtCJ8CQTJ84RxxFaUWc77tkbWBiw7rSbFou93Mm2Mbm6YXWPxC9cauiRAO+mjF8SxqE08Ov7qwOms7xKUkv4byn19q1ygbfKp2h0zrrrRu3wd4JKGWTBnw1Y7xztpWS7BRmp9vbsLzf3U/d5bqgQzJ9SlKLuOAweNKCTTJ/z4LcWeSmJtgbj99ZB23Vts6rVDAa8NWMYIyh8nx4+fuazho8xmMr4JfGZ9LrcNA4K9PWua2NzbNDb4hSssF6rNY8voqcBnw1I5xo6KL1cn/YN2wBv8sij1Qi1qif6jh7s3fBSi3VXOqh5lJ34EL5yyAxA6p32z6vUoFowFczwu7TzQBsKsux/Ro7QzJ95rms1S/PS5BVMEfYtNBqy5ung6w04nBawzPPv2n7vEoFogFfzQhvnm6hODuZoqwU268533mezMRMMhKDTI7yKujuIMFjOD/Qbvv8i/PTyJmVwJtnQiwtNW+jtRmKLqSmIqQBX017bo/hrTMtbFrgf8niQHxDMu1wdNRS7DGcvzxq3cDAr3EIGxbk8ObpluDj8Us2WY86Hl9FSAO+mvaOXOygo9c1mEKxq6azJugqmcN01FIsidR01oRVx8ayHOraeznXEiSPP2c1OBPgvObxVWQ04Ktpz5e/37jAfsA3xtDY08jslNn2XtBew+z4dJp6wtu0x3dPwddGv+KTYO4aHamjIqYBX017u0+3UJY3i3yb4+8B2vracHlc5KXY3ISnvYb8pGza+9rpc/fZrmd+7iwK0pPYHezGLUDJRqirgv4gM3OVCkEDvprWBtwe9pxrZVNZePn7xu5GAPJT8kMX7m2Hvg7yUgsBaOq238sXETaV5fBWyDz+RvC4oEZXFldjpwFfTWsHa9ro7neHNRwTGEzN5CXb6OG311plvTd4w03rbCjLoeVyPycaugIXKl4HiKZ1VEQ04KtpbfcpK1WyPoz8PbzXS7eV0mm3btTmZVvr4PveHdhlK4+fnAmzV+gELBURDfhqWtt9uoWlhelkzwpvAxFf0LbXw78AQH7uUiC8lA5AUVYKJdkpNvL4G+DCHnC7wjq/Uj4a8NW01TvgZm/1pbDTOWClZTITM0lw2vhH0V4DjjgysxcR54ijsSe8Hj5Yvfy3z7Tg9gTJ48/bBAOXrZu3So2BBnw1bb15poV+l4fNi8K7YQtWDz+cETqkz0GcceQn54fdwwfYvCiXjl4X+6svBS40/1pA4PTLYZ9fKdCAr6axl481khzvDGv8vU9TdxP5yTZG6AB01EK6tQ5+XkremAL+lkV5OB3CH48FeXcwKwcKV8LpP4Z9fqVAA76apowxvHS0kasX5pAUb38FS5/GnnB6+BcGNz7JT8kfU0onIzmetaVZwQM+QNk2qHkH+jrDrkMpDfhqWjrZ2EVtWw/brrA5U3YIt8dNS0+LvRu2Hjd0XBwM+HnJY+vhA2y7Ip9j9Z3UtvUELrTgOms8/rk3xlSHmtk04Ktp6aWjVk/5uits9tKHuNR3Cbdx25t01dVgBeCM91I6XQNddA8EWRsnAN8/p6C9/JINEJesaR01JlEJ+CJyk4gcF5FTIvKAn+NXiMibItInIn8XjTqVCublY40sK0ynMCM57NcODsm0NQbfmnQ1NKUD0NwTZEx9AGV5syjJTuHlYAE/LhFKN8MZvXGrwhdxwBcRJ/A94GZgGXC3iCwbUawV+N/A1yOtT6lQ2rr72Vt9iW1X2LzpOoIvJWPrpq13DP7QlA6EP/kKrGUWtl2RzxunmunpD7KRStl10HxicMKXUnZFo4e/DjhljDljjOkHfgXsHFrAGNNojNkDDEShPqWCevVEE26PYdvSsQV8303XcGbZjuzhh7u8gs+2K/Lpc3l480yQdwhl26xHHZ6pwhSNgD8XuDDk6xrvc2MiIveISKWIVDY1je2PRs1sLx9rJHtWAquKMsf0+qbuJgQhJ9nGcM72GkhMhyRrVyzfP4mx9PAB1i/IJiXBOXgPwq+8KyCtUPP4KmzRCPji57kg0wWDM8Y8ZIypMMZU5OWFf8NNzWxuj+GVE01sXWKNax+Lxu5GspOyiXfEhy7cXgPp7/Vv0uLTSHImjXmkTmKck80Lc/njscbAq2eKWKN1zrwCHs+Y6lEzUzQCfg1QPOTrIsD+Pm9KRdFbZ1po6x5gx9Lwh2P6NPU02RuhA9B5EdLnDH4pIuSl5I1pLL7PjmWzqWvv5UBNkP1xy7ZBTytc3D/metTME42AvwdYJCLzRSQBuAt4KgrnVSpsT+yvJS0xbsw3bMFK6diedNVZD+mFw56KZCw+wI3LC0iIc/Dk/trAhRbtAEc8HHlyzPWomSfigG+McQH3Ac8DR4FHjDGHReReEbkXQEQKRKQG+BzwRRGpEZH0SOtWaqjeATfPHarnphUFY5pd69PU02Rv0pXbZY3DTxse8PNT8sd80xasWbfbr8jndwcuMuAOkLJJzrJ6+YefhGAbpyg1RFTG4RtjnjHGLDbGlBljvux97kFjzIPez+uNMUXGmHRjTKb3845o1K2Uzx+ONtDV5+L21WMeM4DL46Klp8VeSudyExgPpBUMezovJY/G7iA5eBtuWz2Xlsv97DoVZLTO8tuhvRpq9425HjWz6ExbNW08ub+WgvSksDc7GaqlpwWDITfZxgqbnXXWY9qcYU/nJefR4+rh8sDY95/duiSPjOT44GmdJTeDMwEOPz7metTMogFfTQutl/t55XgTO8vnjHl0Drw3ft5WD7+z3nr008Mfeq6xSIxz8icrC3nhcAOX+wJseJKcCWXbNa2jbNOAr6aF3x+8iMtjuC2CdA6EuaxCp3cw2sgcvneGbiQ3bgFuXz2XngE3LxypD1xo+W3QUaObmytbNOCraeGJ/bVcUZDG0sLIxgKEtaxCZz2IA2YN/+cwOPkqgqGZAGtKsijKSuaJ/UFGOQ+mdZ6IqC41M2jAV1Pe6aYu9lW3sbM8st49WEHaIQ6yk7JDF+6sg9TZ4Iwb9vTg8goR9vAdDmFn+Rx2nWyirj3AkslJGbBwhzU8UydhqRA04Ksp779fP0tCnIM71hRFfK6m7iZyk3JxOmwM6+ysH5W/B5gVP4uUuJQxL68w1F1rSxARfvLGucCFlt9u7bp1XtfIV8FpwFdTWmNnL7/ZV8Mda4rIS0uM/Hzh7HTVUTcqf+8T6Vh8n+LsFP7kykL+79vVtPcEWHvwilutcflvPxhxfWp604CvprSHd59jwO3hb7YsiMr5wptlW+e3hw9j39vWn3uuWUBXn4v/+3a1/wIJKVDxMTj2e2g9E5U61fSkAV9NWV19Ln7+5nluXFbA/NxZUTlnU7fNWbauPmstmxFj8H3ykvOiktIBWDE3g80Lc/nxG2fpcwVYJ3/d34AjDt7SXr4KTAO+mrJ+9U41Hb0uPn5tdHr3A54B2vrabE668j8G3ycnOYeW3paotAvg49cuoKmzL/BErLQCuPIO2P8/0NMWtXrV9KIBX01JA24PP951lnXzs1ldkhWVc17qvTSGWbb+c/i5ybn0uHrGtLetP5sX5rKsMJ0fvHYGjyfAJKsNn4SBy7Dv4ajUqaYfDfhqSnp49zkutvfyiWvLonbOlh6rR56TZGNphsGAH6CH7z2H75yREhE+sbWMM02XeaTygv9ChSuhdAu8/QNw6+ZyajQN+GrKqW3r4RsvnuC6JXlsXRK9TXJ8G4/b2unKl9JJ95/D971LaO4NfzPzQG5dWci60mz+32eP0dzV57/QxvusIZray1d+aMBXU86/PHUYjzH8684ViIx93ZyRfDl3ewG/zprhmuw/neQ7R7R6+GD18r98+wq6+138+++P+i+0+Earl/+Hf4XOhqjVraYHDfhqSnnhcD0vHmng/u2LKc5Oieq5B3v4dlI6Hd4hmQH+4Qz28Hui18MHWDQ7jXuuWcDj+2vZ7W/pZBG49Vvg6oHn/zGqdaupTwO+mjK6+lz8y1OHWTI7jb/eMj/q52/paSElLoWUeBv/SDoDT7oCyEzMRJCojtTx+fS2RZRkp/DFJw/RO+BnmGbuQtjyt3DoN3DqD1GvX01dGvDVlDDg9vCpX+yjobOPf3//CuKd0f/VbeltsTdCB7zLKgQO+HGOOLKSsqKa0vFJinfy5dtXcLblMp/9dZX/UTubPws5C+Hpz0F/dEYKqalPA76a9IwxfOGJd3n1RBNfvm0Fa+bZWNhsDFp6Wuzl7yFkwAcrjx/tlI7PlkV5fOGWpTx7qJ5/85fPj0u0Ujtt5+Hxv7G2Y1QzngZ8Nen950uneKSyhk9vW8hd60piVk9LT4u9/H1fJ/R3BhyS6ZOTFN3JVyN9bPN8/vLqUn78xll+tOvs6ALzt8BNX4FjT8PT9+smKYq40EWUmhgut4dv/uEE33v5NO+/ai6fu35xTOtr7m2moqAidMHBWbbBe/i5ybnsb9wfhZb5JyJ88U+WUd/ey7/9/gi9A24+cW0ZjqE7fm34BPRcgle/CkmZcMO/BbzRrKY/DfhqUmrs7OX+X1bx5pkW7lpbHPUhmCMNuAdo72u3PyQTID1ESicpx9oj15iYtd3pEL755+XEP3aQrz1/nMpzrXzjz8rJmpXwXqGt/2gF/Te/az3e9BVIimyjGDU1aUpHTSout4fH99Vw63/uYv+FS3z9zlV85QMrSYiL7a+qL/US3jo6oXv4ve7eiDYztyMp3sm37yrnS7et4I1TLdz6nV387sBF3L6buSJw01fhmr+HA7+E/7oazr4e0zapySkqf0UicpOIHBeRUyLygJ/jIiL/6T1+UESuika9avro6XfzyJ4LbP/Gq3zukQPkpCbyxCevjsqmJnYMTrqyNQbft5dtiBy+b/JVDPP4PiLChzfM49F7N5Kc4OTTv9zPDd98lSf211hDNx0O2PZF+KvnrR26Hr4VfvVBOPOK5vZnkIhTOiLiBL4HXA/UAHtE5CljzJEhxW4GFnk/1gP/5X1UM9SA28OZpsvsPX+Jl442sOtUM30uDyvmpvPQh9ewY+ns4bnoGPMNn7Tdw09Ig8S0oMV8Ab+5p5l56fMibqMdq4ozef4z1/DsoTq+89IpPvvrA3zhiUNsXpjLjqWzWV2ylPl/8xpxu78JlT+xbujmLrY2USm9GorXh/y+1NQVjRz+OuCUMeYMgIj8CtgJDA34O4GfGWMM8JaIZIpIoTGmLgr1j3LwxG48Rvf3DMUXTo0RHA4HggOHCIIDp8ThdMThdCYQL/GIw4nBgccZh8GJx5mAR5wYY/AYcLkNHmPod3vod1kfvQNuuvpcdPW5aOseoKGjl8bOPi60dnO6qYsBt9WzLMpK5u51JdywbDYby3JimqsPZHDhNLs5/BC9e4j+Amp2OR3CrSvncMuKQl4/1cyLR+p56WgjLxyxllpIiHOwMO86SmfvYLtnFxvbnqbgjW/j2PUNDA56U4voTythIL0E96zZeJKyIDkTk5AKcUkQn2wtK+GMQyQenE4MwgBuBjxu3MbgNh6MWL8bBg8eYxBvPkHfT4TmcMSxctGGqJ83GgF/LjB0+b4aRvfe/ZWZC8Qk4H/sjXvoHcfe4UyQ6PGQYgzpHg9pHg85bg+FA27yXVDQ72BuTzIDZhZNJoMLJp9qk88pz1wOmgX0Yd1AzJ6VQH5aInMyk9m6JJ+lhWksn5NOWV7qhAT5ocJaViHAXrYjxWp5BbscDuHaxXlcuziPL+00nGjo4khdO8fqOjne0MnpS73s7iynrXs5KfSy2nGSdY7jzG+vo6TjIiUXq8iVLjocQlViImfj46mNi6M2Po5Wp4MOh/XRI0KfQ28HRlOWy8Nriw5H/bzRCPj+/lJH/hO3U8YqKHIPcA9AScnYxlx/KHU7bo9ONAnGDP3MGAxgrL6Y9WgMbtx4MAwYFwMM0GsG6Da9XDb9nDXdvG266cWa2u8wsNDTz8a+Ov689QDFA73W2R0JuApXI2XXEbfmI5AxdyK+3ZBaeltIjU8lKS4pdOHOi1AcuveVmZiJQxzjksMPRURYUpDGkoI0WD38WJ/LTWevi65eF529Lvpcbs52XuAndU9xrK2Sup6zGO9vTJIkkuvMJN2RwmwSmS8JJBFPgjiINw6c4sCJ4ECQIY/C8CAg772/HI9vf8pJtLO8xxhEI+DXAMVDvi4CLo6hDADGmIeAhwAqKirG9Ntw/53fHsvLVJiMMbT1tXGs9Rj7Gvext2Ev/9Owj5/PKmDr7PV8NLucqy7VEX/+DXjtq/D61+CKW2D9J6x88STS3NNsL39vjNXDDzEkE8DpcJKdlD3uKZ1wJcY5SUx1kpuayNt1b/PwsYd5vfZ14iSONQVruG3JTazJX8OS7CWkJ6RP+LsxNXbRCPh7gEUiMh+oBe4C/mJEmaeA+7z5/fVAe6zy92r8iAhZSVlsnLORjXM2AlB/uZ5fH/81j514jD/Wv8lHln2E+7c/R0LHRaj8Mez7ORz9HVz1Ebjx3yfNDcKWnhayk2ws2dBzCdz9IYdk+vjG4k92Pa4evrbnazx64lFyknL4xKpPcOfiO+1v6K6mhIgTb8YYF3Af8DxwFHjEGHNYRO4VkXu9xZ4BzgCngB8Cn4y0XjU5Fcwq4P6r7ueFO17griV38bMjP+ODz3yQMw4PXP+v8Lkj1sJe+//HGg9+fvdENxmwUjphTbqykcOH6O9tGwvHW49z19N38eiJR/nL5X/JC3e8wCfLP6nBfhqKyp0WY8wzxpjFxpgyY8yXvc89aIx50Pu5McZ8ynv8SmNMZTTqVZNXclwyX9jwBb6z7TvUX67nL37/FxxvPW6N8NjxL/CXz1oTgn56Kxx7ZqKbaz+l0xF8L9uRcpNzJ+ymrR0Hmw7yoWc+REd/Bz+4/gd8ruJzJDgTQr9QTUl6a13F1NbirTxy6yPMipvFp176FA2XvbswlWyAj78Oc8rh0f81oTM/+939dPZ3hrmXbXgpHTMJJzdd6LzAp//4aXKSc3j0Tx9l05xNE90kFWMa8FXMFaYW8r0d36Ozv5P7/njfe0sNJKXDBx+D7Pnwy7vhYuwWGgsm7ElXEFZKp9/TT+dA51ibFxPtfe188g+fxOVx8f0d37e/D4Ca0jTgq3FxRfYVfP3ar3Py0kn+4bV/eK/Hm5INH37C2hv2f+54L6COo7D3sk3OttabtyEWe9tGyuVx8ZmXP0NtVy3fvu7bLMhYMNFNUuNEA74aN1uKtvD3a/+e12pe45mzQ/L26XPgQ49Z68w/N/77sPpy7PZ6+HVWe22a6MlX/jx+8nEqGyr5pw3/ZG85aDVtaMBX4+ruK+5mafZSvrn3m3QPDNl6L28JXPN3cPhxODm++7AOLqtgN4dvM50z9JyTZaROR38H393/XdbMXsNtC2+b6OaocaYBX40rhzj4/LrP09DdwE8P/3T4wavvh5xF8Pvx3Yd1cFkFWykde8sq+Ph6+JMlpfPggQdp62vj82s/rxOoZiAN+GrcrZm9hhtLb+Qnh35C/eUhOfu4RPjTb1n7sL72H+PWnpbeFtIS0kIPR/S4oavB9ggdgIzEDJzinBQB/1z7OX559Je8f9H7WZqzdKKboyaABnw1IT635nMYDN/Y+43hB0o3Q/mHYPd3oOX0uLTF9hj8rkYwnrACvkMc5CTFbjPzcHy98uskxiVy3+r7JropaoJowFcTYk7qHD6y7CM8e/ZZzrSdGX5w+z8BAm8/OC5tsb15eZhj8H0mw2zbQ82HeLXmVe5ZeY8OwZzBNOCrCfPBpR8kzhHHoyceHX4grQCuvAP2/8JauybGWntbYzIG3ycneeLX03nk+CMkxyXzZ4v/bELboSaWBnw1YXKSc9hRsoOnTj9Fr6t3+MENn4SBy7D34Zi3o7mnOczNy+0PywRrpE5TT9MYWhYdHf0dPHfuOW6ZfwupCakT1g418TTgqwl15+I76ejv4IXzLww/ULgS5l8Db/8A3AMxq797oJuugS77Y/DFAbPCW1QsLyWP1p7WCduF7enTT9Pj6uHOJXdOSP1q8tCArybU2oK1lKaX8ujxR0cf3PApa7ORI7+NWf2+m6n5KfmhC3fWQepscDjDqiMvOQ+XcXGpN/bpqZGMMTx64lGW5yxnec7yca9fTS4a8NWEEhHuWHwHVU1VnLh0YvjBRTdAzkJ487vWxiMx0NjdCISxjk6Y+XtgcJnhiUjrHGg6wKm2U9y5WHv3SgO+mgR2lu0kwZEwupfvcMCGT1iLqtXujUndgz38ZDs9/HpICy9/D1YPH6Cpe/wD/iPHH2FW/Cxunn/zuNetJh8N+GrCZSZlckPpDTx9xso1D7PiDnAmwKHHY1K3r4dva7OPjotj6uH70kXj3cNv72vn+XPPc+uCW0mJ0R6pamrRgK8mhfeVvY+ugS7euvjW8APJmVC2HY48CZ7o3/Rs7mkmwZFAekJ68IKuPuhpDXsMPryXLhrvHv5rNa/R7+lnZ9nOca1XTV4a8NWkUFFQQVp8Gq/UvDL64PLboaMWaqO/UVpjTyN5KXmh15UZ4xh8gARnApmJmePew3/lwivkJeexPFdv1iqLBnw1KcQ74tk8dzOvXHgFt8c9/OCSm8GZCIefiHq9Td1NNkfoeAN+evg9fLBSRr700Xjod/ezq3YX1xZfi0P0z1xZ9DdBTRpbi7fS2tvKu83vDj+QlA4Ld8DhJ6Oe1mnqabI5Quei9TiGlA5YN27Hcz2dPfV76HZ1c13xdeNWp5r8NOCrSWNz0WbiJI5XLrwy+uDy262gW/NOVOsMu4cfQcAfzx7+yxdeJjkumfWF68etTjX5acBXk0Z6QjprCtb4D/hLbop6WifsWbbORGsrxjHIS8mjpadlXGbbGmN45cIrbJqziUSnva0Y1cygAV9NKtcVX8fp9tNUd1QPP5CYBouuj2paJ7xZtt5JV2PcNGQ8Z9seaz1GQ3cDW4u3xrwuNbVEFPBFJFtEXhSRk95Hv90fEfmxiDSKyKFI6lPT37VF1wIETut01UctrTM4Bj/Z7hj8saVzYHzH4r9y4RUE4Zqia2Jel5paIu3hPwC8ZIxZBLzk/dqfnwI3RViXmgGK0opYlLXI//DMhdutxctOvRSVunw9fFsBP8y9bEcaz7H4L194mfL8crKTsmNel5paIg34OwHf+rUPA7f5K2SMeQ1ojbAuNUNsLdrKvoZ9tPe1Dz+QnAVzroIzL0elHtuzbI2B9hrILB5zXePVw6+/XM/R1qOazlF+RRrwZxtj6gC8jzaSocGJyD0iUikilU1NE7eGuJo4m+duxm3cVDb4mWhVts1aV6enLeJ6bM+y7W4FVy+kF425rvHq4b9Tb6W7rp5zdUzrUVNTyIAvIn8QkUN+PmIyX9sY85AxpsIYU5GXF96642p6uDL3SpKcSVTW+wv411n7yp59LeJ6bM+ybb9gPWaMPeCP12zbPfV7yEjMYFHWopjWo6amuFAFjDE7Ah0TkQYRKTTG1IlIITB+A43VtBXvjGdV/ir21O8ZfbBoLSSkWmmdZe+LqB7bY/Dba6zHCAI+jM9s2z31e6iYXaGza5Vfkf5WPAV81Pv5R4HY7VShZpS1s9dy4tKJ0Xl8ZzyUboHTf4y4DtuzbAcD/thz+BD72bZ1XXXUdtVSMbsiZnWoqS3SgP8V4HoROQlc7/0aEZkjIs/4ConIL4E3gSUiUiMiH4uwXjXNrS1Yi8Gwt8HPOvhl2+DSOWg9E1Ed9nv4FyAuCVIiG/US69m2vnseawvWxqwONbWFTOkEY4xpAbb7ef4icMuQr++OpB4186zIXUGiM5E99XvYVrJt+MEy7/owp1+G7AVjOr9vlq29Mfi1VjpnjJOufPJT8gdn28Yi5bKnfg/pCemav1cBaaJPTUoJzgTK88r99/BzFlrplQiGZw6Owbez8Ul7TcT5e7BG6sRytm1lQ6Xm71VQ+puhJq2KggqOtR4bnccXgQVbrZE6bteYzh3WLNv2moiGZPrEcix+/eV6LnReoKJA8/cqMA34atLy5fH3NewbfbBsG/S2W/vdjoHtWbaufmsdnSj18CE2Y/F9I5o0f6+C0YCvJq0rc6+08vgNfoZnzveuE3P+jTGd2/Ys2846wEQl4Meyh1/ZUEl6QjqLsxZH/dxq+tCAryatBGcCq/JW+Z+ANSsXchZB9ZtjOndzTzOJzsTQs2yjNAYfYtvDr6yv5KrZV2n+XgWlvx1qUvPl8Tv6O0YfLNkA1W+Nabnkxp5GcpNzbcyyjV7Aj9Vs2/rL9VR3VrN2tqZzVHAa8NWkVjG7AoOhqrFq9MF5m6C3DZqOhX3esMbgA6TPDbsOf2Ix23Z/o3UfY03BmqieV00/GvDVpLY8ZzlOcXKg6cDogyUbrcfq3WGfN6xZtik5kJASdh3+xGK27YGmAyTHJWv+XoWkAV9NainxKSzOWuw/4GeVQmqBldYJk+0evm/SVZTEYrbtgcYDLM9ZTrwjPqrnVdOPBnw16a3KW8W7Te/i9riHHxCBeRvhfHg3bjv7O+ka6GJ2yuzQhaM0Bt9n9qzZNPU0MeAZiMr5el29HGs9xqq8VVE5n5reNOCrSW9V/iq6Xd2cajs1+mDJJuiogbbq0ccCqO2qBazdtUKK0ixbn6LUIjzGQ/3l+qic73DLYVzGpQFf2aIBX016vmDmP4+/wXoMI61T02mNvClKDRHIe9uhryO6Ad/7T8bXhkj5rsmqfA34KjQN+GrSK0otIjsp2/9IndnLITEdztu/cTsY8EP18KM4JNOnOM1aYrmmKzoBv6qxipK0Et2/VtmiAV9NeiJCeV65/x6+wwnF68KagFXTVUNGYgZpCWnBC7ZbqZ9o37SNd8RHpYdvjOFA0wFN5yjbNOCrKWFV/iqqO6tp7W0dfbBkozUWv9vPMT9qOmuYm2pjXH0UtjYcyelwMid1TlQCfk1XDa29rRrwlW0a8NWU4AtqB5sOjj44b5P1aDOPX9tVGzp/D1ZKxxEHqTZG84ShKLVo8MZxJHzveMrzyyM+l5oZNOCrKWF5znLiJM5/Hn/OanDEw4W3Q57H7XFbAd/uCJ30OVbaKIqK0oqiksOvaqwiJS6FhZkLo9AqNRNowFdTQlJcEkuyl/jP48cnQ+EquPBOyPP4xsDbCvgdtVEdg+9TlFpEe1+7//WBwnCw6SBX5l6JM8r/kNT0pQFfTRnl+eXWuHOPn01PitfDxX3W+vVBXOi08vK2cvht1VHN3/vMTbPqru0ce1qne6CbE5dOsDJvZbSapWYADfhqyliVt4oeVw/HLx0ffbBkPbh6od5Pjn8I383S4tTi4JX1d1s3bXOiny7x3T+IJK1zuOUwbuPW/L0KiwZ8NWWU55UD+M/jF62zHkPk8Wu7anGIg4LUguCVtZ62HnOjvyG4L50USQ/ft0KmjtBR4dCAr6aMglkF5Kfkc6DRTx4/vRAyS0IG/JquGgpnFYZeaKz5pPUYg4CflpBGRmJGRD38qsYqFmQsICMxI4otU9OdBnw1ZYgIq/NXs78pwD62xeuh+m0wJuA5bI/B9wX87LIxtDS0ualzxzwW32M8VDVVsTp/dZRbpaa7iAK+iGSLyIsictL7mOWnTLGIvCwiR0XksIjcH0mdamYrzyun/nK9/8XHitdDV33QhdRqOmvsjdBpOQkZxVFbB3+kotSxD808236Wzv5OTeeosEXaw38AeMkYswh4yfv1SC7gb40xS4ENwKdEZFmE9aoZyter9ZvHL15vPQYYntk90E1Lb4u9SVfNJ2OSzvEpSrMmX41a8tkGX/5ee/gqXJEG/J3Aw97PHwZuG1nAGFNnjNnn/bwTOApEZ784NeMszl5MclwyVU1Vow/mL4OE1IB5/ItdFwEbi6YZAy2nrE3SY6QorQiXxzWm/W2rGqvISsxiXvq8GLRMTWeRBvzZxpg6sAI7EHQLIREpBVYDAe+sicg9IlIpIpVNTdHd7FlNffGOeFbkrhjs5Q7jjIO5awIGfF8KJWQOv7Me+rti2sP3tcE3LyAcVU1VrMpfFXoDdqVGCBnwReQPInLIz8fOcCoSkVTgN8BnjDEBpxgaYx4yxlQYYyry8vLCqULNEOV55RxvPU73QPfog8XroeEQ9HWOOmR7WeTmE9ZjDMbg+/jmAYR747a1t5XzHec1naPGJC5UAWPMjkDHRKRBRAqNMXUiUgj43axTROKxgv0vjDGPj7m1SmHNuHUbN4eaD7GucN3wgyXrwXigphLKrht2qKarhpS4FLISR40tGK7FNyQzdpuCF6QW4BBH2DduffcufHMSlApHpCmdp4CPej//KPDbkQXEet/5I+CoMeYbEdan1ODoFL95/KK1IA6/K2f6RuiETIU0n4L4WdbCaTES74incFZh2D38qqYq4hxxLM9dHqOWqeks0oD/FeB6ETkJXO/9GhGZIyLPeMtcDXwY2CYiVd6PWyKsV81gGYkZlGWU+c/jJ2VAwUo4t2vUodquWntj8FtOQk6ZtUl6DM1NnRv2MslVjVUsy1lGojMxRq1S01lEAd8Y02KM2W6MWeR9bPU+f9EYc4v3813GGDHGrDTGlHs/ngl+ZqWCK8+3dsDyGM/og6WboWYPDPQOPmWMsT8Gv/lETG/Y+hSlFYXVw+9393O4+TCr8zR/r8ZGZ9qqKak8v5zO/k7OtJ0ZfbB0M7j7oLZy8KkLnRfodfcyP2N+8BMP9EDbhZgOyfSZnz6flt4WmnuabZU/0nKEfk+/LpimxkwDvpqSKmZXAPB2vZ8hmCUbARmW1vGlf0Le7Gw9A5hx6eH7ArfftYH8eLvO+l51hI4aKw34akoqSiuiNL2U12tfH30wORMKrhwV8NPi0yjLDLE2TgwXTRtpWc4y4h3x/u9F+LGrdhfLc5aTk5wT45ap6UoDvpqyNs/dzJ66PfS4ekYfLN0yLI9f1VjFyvyVOCTEr7xvSGYMx+D7JDgTWJ6zPPBicEO097VzsPkgW4q2xLxdavrSgK+mrC1FW+j39LOnfs/og6WbrQ1RavfS3tfO6fbT9m52Np+E9LmQMCv6DfZjdf5qjrQcoc/dF7Tc7ou78RgPm+duHpd2qelJA76asipmV5Acl8zrNX7SOvPey+P79sG1lfuO8aJpI5Xnl+PyuDjcfDhouddrXiczMZMVOSvGqWVqOtKAr6asBGcC6wvWs6t2F2bkGvjJWVCwAs7voqqxCqc4WZEbIli6+qHpGORdEbtGj+C7cRssj+8xHt64+Aab5mzSDctVRDTgqylt89zN1HTVcK7j3OiDpVvgwjvsb9jLkuwlpMSHWNv+4j4Y6IZ5V8ekrf5kJ2VTml7qf7lnryMtR2jtbdX8vYqYBnw1pW0usnLau2pHz6xl3tUMuHo51PyuvXTO2dcBsfL/46g8v5yqpqrR71K8Xq99HUG4es74/SNS05MGfDWlzU2dS1lGWYA8/iaOJybR6xmwN1np7KtWGiglO+rtDGZ1/mra+tr8v0sBdtXs4srcK8lKCrHom1IhaMBXU97muZupbKgcvVxySjb75ywFoDw3xHaAA73WTlml18SolYH5JoP5S+tc6r3Eu83v6ugcFRUa8NWUt6VoCwOeAV6qfmnUsar0HApdLgo6GoKfpGaPtRzD/PEP+KUZpWQkZvhd/fP5c89jMBrwVVRowFdTXsXsCpZmL+Vbe7/F5YHLg88bY6jqb6W8rx8Oh9iG4exr1rLK8zbGuLWjOcRBeV75qJE6l3ov8d2q73JV/lWhRxgpZYMGfDXlOR1OvrjhizT1NPH9qu8PPv+zIz+jsbeZ9anz4fAT1l61gZx7HeastpZXngDrC9dztv0sj514bPC5b+/7Nl39XXxxwxd1O0MVFRrw1bSwMm8lH1j8AX5x9Bccbz3Ob0/9lq9Xfp0b5t3AbSs+Cm3VULvP/4v7L1s7ZJVO3LDHu664i81zN/Olt77Ei+dfpKqxit+c/A0fXvZhFmWN30QwNb1JoKFgk0FFRYWprKwMXVApoK23jfc9+T7SEtKo7aplXcE6vrv9uyT0X4avLYL1H4cbvzz6hadegv95P3zocVi4ffwb7tXj6uHjL36cQ82HyE/JZ8AzwO9u+13o+QNKDSEie40xFf6OaQ9fTRuZSZl8ds1nqe6sZnnOcr513bdIcCZYs24XbofDT4LHz4YpZ18DRzyUbBj3Ng+VHJfMd7Z9h9KMUmq7anlg3QMa7FVUhdzEXKmpZOfCnaQnprO2YO3wYLn8djjxnDUap2T98BedfQ2KKsZtwbRgMhIz+NENP+JA0wGuLbp2opujphnt4atpxSEOtpdsJz0hffiBJbdAQho8+/dWzt5n70+tJRWW3Dyu7QwmKymLrcVb9UatijoN+GpmSEqHD/w31L8Lj99jpXbO7YLf/y2UbYcNn5roFioVcxrw1cyx5Ca48d/h2NPwu0/Drz8MWfPhjh+DU7ObavrT33I1s6y/11rzvvJHkJQJf/Fra0tEpWaAiAK+iGQDvwZKgXPAnxljLo0okwS8BiR663vMGPP/RFKvUmMmAjf/h7VA2sLrISfEHrdKTSORpnQeAF4yxiwCXvJ+PVIfsM0YswooB24SkYkd/6ZmNmccbPvi6NE6Sk1zkQb8ncDD3s8fBm4bWcBYurxfxns/Ju9sL6WUmqYiDfizjTF1AN7HfH+FRMQpIlVAI/CiMebtQCcUkXtEpFJEKpuamiJsnlJKKZ+QOXwR+QNQ4OfQF+xWYoxxA+Uikgk8ISIrjDGHApR9CHgIrKUV7NahlFIquJAB3xizI9AxEWkQkUJjTJ2IFGL14IOdq01EXgFuAvwGfKWUUrERaUrnKeCj3s8/Cvx2ZAERyfP27BGRZGAHcCzCepVSSoUp0oD/FeB6ETkJXO/9GhGZIyLPeMsUAi+LyEFgD1YO/+kI61VKKRWmiMbhG2NagFHryRpjLgK3eD8/CKyOpB6llFKR06UVlFJqhpjUG6CISBNwfowvzwWao9icaNF2hUfbFR5tV3imY7vmGWPy/B2Y1AE/EiJSGWjXl4mk7QqPtis82q7wzLR2aUpHKaVmCA34Sik1Q0zngP/QRDcgAG1XeLRd4dF2hWdGtWva5vCVUkoNN517+EoppYbQgK+UUjPElA74InKniBwWEY+IVIw49o8ickpEjovIjQFeny0iL4rISe9jVgza+GsRqfJ+nPMuE+2v3DkReddbrjLa7fBT37+ISO2Qtt0SoNxN3mt4SkT8bXAT7XZ9TUSOichBEXnCtw6Tn3Ljcr1Cff9i+U/v8YMiclWs2jKkzmIReVlEjnp//+/3U2ariLQP+fn+c6zb5a036M9lgq7XkiHXoUpEOkTkMyPKjMv1EpEfi0ijiBwa8pytOBSVv0VjzJT9AJYCS4BXgIohzy8DDmBtqzgfOA04/bz+P4AHvJ8/AHw1xu39/4B/DnDsHJA7jtfuX4C/C1HG6b12C4AE7zVdFuN23QDEeT//aqCfyXhcLzvfP9YSIs8CAmwA3h6Hn10hcJX38zTghJ92bQWeHq/fJ7s/l4m4Xn5+pvVYk5PG/XoB1wBXAYeGPBcyDkXrb3FK9/CNMUeNMcf9HNoJ/MoY02eMOQucAtYFKBd0x65oEREB/gz4ZazqiIF1wCljzBljTD/wK6xrFjPGmBeMMS7vl28BRbGsLwQ73/9O4GfG8haQ6V0qPGaMMXXGmH3ezzuBo8DcWNYZReN+vUbYDpw2xox1Bn9EjDGvAa0jnrYTh6LytzilA34Qc4ELQ76uwf8fhK0du6JkC9BgjDkZ4LgBXhCRvSJyTwzbMdR93rfVPw7wNtLudYyVv8LqDfozHtfLzvc/oddIREqxFif0t4vcRhE5ICLPisjycWpSqJ/LRP9O3UXgTtdEXC+wF4eict0iWi1zPEiQHbeMMaPW3/e9zM9zMRt/arONdxO8d3+1MeaiiOQDL4rIMW9vICbtAv4L+BLWdfkSVrrpr0aews9rI76Odq6XiHwBcAG/CHCaqF8vf03189zI739cf9eGVSySCvwG+IwxpmPE4X1YaYsu7/2ZJ4FF49CsUD+XibxeCcD7gH/0c3iirpddUblukz7gmyA7bgVRAxQP+boIuOinXFg7do21jSISB7wfWBPkHBe9j40i8gTWW7iIApjdayciPwT87VFg9zpGtV0i8lHgVmC78SYw/Zwj6tfLDzvff0yuUSgiEo8V7H9hjHl85PGh/wCMMc+IyPdFJNcYE9OFwmz8XCbkenndDOwzxjSMPDBR18vLThyKynWbrimdp4C7RCRRROZj/ad+J0C5oDt2RckO4JgxpsbfQRGZJSJpvs+xblzGdAvIEXnT2wPUtwdYJCLzvb2ju7CuWSzbdRPweeB9xpjuAGXG63rZ+f6fAj7iHX2yAWj3vT2PFe/9oB8BR40x3whQpsBbDhFZh/W33hLjdtn5uYz79Roi4LvsibheQ9iJQ9H5W4z1XelYfmAFqhqgD2gAnh9y7AtYd7WPAzcPef6/8Y7oAXKAl4CT3sfsGLXzp8C9I56bAzzj/XwB1l33A8BhrNRGrK/dz4F3gYPeX5zCke3yfn0L1iiQ0+PUrlNYucoq78eDE3m9/H3/wL2+nyfWW+3veY+/y5DRYjFs02ast/MHh1ynW0a06z7vtTmAdfN70zi0y+/PZaKvl7feFKwAnjHkuXG/Xlj/cOqAAW/s+ligOBSLv0VdWkEppWaI6ZrSUUopNYIGfKWUmiE04Cul1AyhAV8ppWYIDfhKKTVDaMBXSqkZQgO+UkrNEP8/E7RfMwjOylcAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(x,LA.eigh(H)[1][:,:3])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "million-instruction",
   "metadata": {
    "collapsed": true,
    "jupyter": {
     "outputs_hidden": true
    },
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[-1.38703892e-19, -2.00088757e-18, -6.35951925e-19],\n",
       "       [-1.11102729e-20, -3.44304020e-19, -7.88762405e-19],\n",
       "       [ 1.99471522e-19,  1.76388734e-18, -3.37288922e-18],\n",
       "       [ 2.61904313e-19, -2.29768883e-18, -2.08150182e-17],\n",
       "       [ 1.13681823e-18, -1.53923746e-17, -1.08017438e-16],\n",
       "       [ 6.57262450e-18, -6.85325283e-17, -5.36891196e-16],\n",
       "       [ 3.24776669e-17, -3.43496753e-16, -2.60055499e-15],\n",
       "       [ 1.56962538e-16, -1.65161830e-15, -1.22056921e-14],\n",
       "       [ 7.40186360e-16, -7.63920225e-15, -5.54926520e-14],\n",
       "       [ 3.38249418e-15, -3.42804226e-14, -2.44377788e-13],\n",
       "       [ 1.49861034e-14, -1.49043232e-13, -1.04199003e-12],\n",
       "       [ 6.43563328e-14, -6.27542904e-13, -4.30006191e-12],\n",
       "       [ 2.67776238e-13, -2.55824114e-12, -1.71683803e-11],\n",
       "       [ 1.07918131e-12, -1.00938073e-11, -6.62913233e-11],\n",
       "       [ 4.21136678e-12, -3.85326523e-11, -2.47447283e-10],\n",
       "       [ 1.59082086e-11, -1.42268262e-10, -8.92544362e-10],\n",
       "       [ 5.81504063e-11, -5.07848921e-10, -3.10968777e-09],\n",
       "       [ 2.05627408e-10, -1.75206017e-09, -1.04606424e-08],\n",
       "       [ 7.03185123e-10, -5.83969386e-09, -3.39597841e-08],\n",
       "       [ 2.32478443e-09, -1.87972519e-08, -1.06351129e-07],\n",
       "       [ 7.42821398e-09, -5.84112357e-08, -3.21136949e-07],\n",
       "       [ 2.29318878e-08, -1.75157389e-07, -9.34552926e-07],\n",
       "       [ 6.83777333e-08, -5.06664417e-07, -2.61981598e-06],\n",
       "       [ 1.96868353e-07, -1.41318605e-06, -7.07084210e-06],\n",
       "       [ 5.47131222e-07, -3.79917537e-06, -1.83643851e-05],\n",
       "       [ 1.46734082e-06, -9.84035996e-06, -4.58720074e-05],\n",
       "       [ 3.79634472e-06, -2.45460039e-05, -1.10137278e-04],\n",
       "       [ 9.47258670e-06, -5.89400536e-05, -2.54021768e-04],\n",
       "       [ 2.27884723e-05, -1.36177762e-04, -5.62438420e-04],\n",
       "       [ 5.28424964e-05, -3.02598598e-04, -1.19465588e-03],\n",
       "       [ 1.18073784e-04, -6.46373162e-04, -2.43245505e-03],\n",
       "       [ 2.54161178e-04, -1.32658643e-03, -4.74371831e-03],\n",
       "       [ 5.26911103e-04, -2.61451196e-03, -8.85241871e-03],\n",
       "       [ 1.05178812e-03, -4.94537228e-03, -1.57913162e-02],\n",
       "       [ 2.02104589e-03, -8.97201201e-03, -2.68945245e-02],\n",
       "       [ 3.73748483e-03, -1.56014529e-02, -4.36700277e-02],\n",
       "       [ 6.65029361e-03, -2.59830787e-02, -6.74898954e-02],\n",
       "       [ 1.13832894e-02, -4.14080793e-02, -9.90649534e-02],\n",
       "       [ 1.87401363e-02, -6.30816535e-02, -1.37743851e-01],\n",
       "       [ 2.96669839e-02, -9.17511267e-02, -1.80790456e-01],\n",
       "       [ 4.51536544e-02, -1.27219568e-01, -2.22916641e-01],\n",
       "       [ 6.60632901e-02, -1.67840691e-01, -2.56417937e-01],\n",
       "       [ 9.28988196e-02, -2.10157387e-01, -2.72203039e-01],\n",
       "       [ 1.25540549e-01, -2.48880871e-01, -2.61777413e-01],\n",
       "       [ 1.63015621e-01, -2.77375919e-01, -2.19862297e-01],\n",
       "       [ 2.03376110e-01, -2.88702029e-01, -1.46926570e-01],\n",
       "       [ 2.43756988e-01, -2.77076986e-01, -5.06749046e-02],\n",
       "       [ 2.80652203e-01, -2.39435045e-01,  5.43481349e-02],\n",
       "       [ 3.10390857e-01, -1.76629026e-01,  1.49355297e-01],\n",
       "       [ 3.29731496e-01, -9.38466672e-02,  2.15642767e-01],\n",
       "       [ 3.36443501e-01,  3.38230523e-16,  2.39428968e-01],\n",
       "       [ 3.29731496e-01,  9.38466672e-02,  2.15642767e-01],\n",
       "       [ 3.10390857e-01,  1.76629026e-01,  1.49355297e-01],\n",
       "       [ 2.80652203e-01,  2.39435045e-01,  5.43481349e-02],\n",
       "       [ 2.43756988e-01,  2.77076986e-01, -5.06749046e-02],\n",
       "       [ 2.03376110e-01,  2.88702029e-01, -1.46926570e-01],\n",
       "       [ 1.63015621e-01,  2.77375919e-01, -2.19862297e-01],\n",
       "       [ 1.25540549e-01,  2.48880871e-01, -2.61777413e-01],\n",
       "       [ 9.28988196e-02,  2.10157387e-01, -2.72203039e-01],\n",
       "       [ 6.60632901e-02,  1.67840691e-01, -2.56417937e-01],\n",
       "       [ 4.51536544e-02,  1.27219568e-01, -2.22916641e-01],\n",
       "       [ 2.96669839e-02,  9.17511267e-02, -1.80790456e-01],\n",
       "       [ 1.87401363e-02,  6.30816535e-02, -1.37743851e-01],\n",
       "       [ 1.13832894e-02,  4.14080793e-02, -9.90649534e-02],\n",
       "       [ 6.65029361e-03,  2.59830787e-02, -6.74898954e-02],\n",
       "       [ 3.73748483e-03,  1.56014529e-02, -4.36700277e-02],\n",
       "       [ 2.02104589e-03,  8.97201201e-03, -2.68945245e-02],\n",
       "       [ 1.05178812e-03,  4.94537228e-03, -1.57913162e-02],\n",
       "       [ 5.26911103e-04,  2.61451196e-03, -8.85241871e-03],\n",
       "       [ 2.54161178e-04,  1.32658643e-03, -4.74371831e-03],\n",
       "       [ 1.18073784e-04,  6.46373162e-04, -2.43245505e-03],\n",
       "       [ 5.28424964e-05,  3.02598598e-04, -1.19465588e-03],\n",
       "       [ 2.27884723e-05,  1.36177762e-04, -5.62438420e-04],\n",
       "       [ 9.47258670e-06,  5.89400536e-05, -2.54021768e-04],\n",
       "       [ 3.79634472e-06,  2.45460039e-05, -1.10137278e-04],\n",
       "       [ 1.46734082e-06,  9.84035996e-06, -4.58720074e-05],\n",
       "       [ 5.47131222e-07,  3.79917537e-06, -1.83643851e-05],\n",
       "       [ 1.96868353e-07,  1.41318605e-06, -7.07084210e-06],\n",
       "       [ 6.83777333e-08,  5.06664417e-07, -2.61981598e-06],\n",
       "       [ 2.29318878e-08,  1.75157389e-07, -9.34552926e-07],\n",
       "       [ 7.42821398e-09,  5.84112357e-08, -3.21136949e-07],\n",
       "       [ 2.32478443e-09,  1.87972519e-08, -1.06351129e-07],\n",
       "       [ 7.03185123e-10,  5.83969387e-09, -3.39597841e-08],\n",
       "       [ 2.05627407e-10,  1.75206017e-09, -1.04606424e-08],\n",
       "       [ 5.81504058e-11,  5.07848922e-10, -3.10968778e-09],\n",
       "       [ 1.59082086e-11,  1.42268261e-10, -8.92544362e-10],\n",
       "       [ 4.21136668e-12,  3.85326602e-11, -2.47447283e-10],\n",
       "       [ 1.07918148e-12,  1.00938084e-11, -6.62913226e-11],\n",
       "       [ 2.67776000e-13,  2.55824365e-12, -1.71683811e-11],\n",
       "       [ 6.43561731e-14,  6.27542665e-13, -4.30006229e-12],\n",
       "       [ 1.49859126e-14,  1.49041723e-13, -1.04199064e-12],\n",
       "       [ 3.38211478e-15,  3.42837476e-14, -2.44379146e-13],\n",
       "       [ 7.39955114e-16,  7.63988570e-15, -5.54934887e-14],\n",
       "       [ 1.56967508e-16,  1.64952151e-15, -1.22056849e-14],\n",
       "       [ 3.24052651e-17,  3.46757814e-16, -2.60085703e-15],\n",
       "       [ 6.55152445e-18,  7.14848744e-17, -5.36970997e-16],\n",
       "       [ 1.27827170e-18,  1.41955619e-17, -1.07529354e-16],\n",
       "       [ 2.88291627e-19,  3.38016602e-18, -2.07230302e-17],\n",
       "       [ 1.40637501e-19,  1.71814751e-18, -3.57733821e-18],\n",
       "       [ 4.24115913e-20,  4.13829760e-19, -6.46393338e-19],\n",
       "       [-2.46604926e-20, -3.52418595e-19, -2.10264091e-19]])"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "LA.eigh(H)[1][:,:3]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "assured-michael",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(101, 101)"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "LA.eigh(H)[1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "certified-algorithm",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python [conda env:mysci]",
   "language": "python",
   "name": "conda-env-mysci-py"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
